use crate::error::{FdbError, FdbResult};
use crate::future::{
FdbFutureCStringArray, FdbFutureI64, FdbFutureKey, FdbFutureMaybeValue, FdbFutureUnit,
FdbStreamKeyValue,
};
use crate::range::{Range, RangeOptions};
use crate::transaction::TransactionOption;
use crate::{Key, KeySelector};
pub trait ReadTransaction {
unsafe fn on_error(&self, e: FdbError) -> FdbFutureUnit;
fn get(&self, key: impl Into<Key>) -> FdbFutureMaybeValue;
fn get_addresses_for_key(&self, key: impl Into<Key>) -> FdbFutureCStringArray;
fn get_estimated_range_size_bytes(&self, range: Range) -> FdbFutureI64;
fn get_key(&self, selector: KeySelector) -> FdbFutureKey;
fn get_range(
&self,
begin: KeySelector,
end: KeySelector,
options: RangeOptions,
) -> FdbStreamKeyValue;
unsafe fn get_read_version(&self) -> FdbFutureI64;
fn set_option(&self, option: TransactionOption) -> FdbResult<()>;
unsafe fn set_read_version(&self, version: i64);
}