export * from './bindings';
import { Account, Transfer, CreateAccountResult, CreateTransferResult, AccountFilter, AccountBalance, QueryFilter } from './bindings';
export type Context = object;
export type AccountID = bigint;
export type TransferID = bigint;
export type Event = Account | Transfer | AccountID | TransferID | AccountFilter | QueryFilter;
export type Result = CreateAccountResult | CreateTransferResult | Account | Transfer | AccountBalance;
export type ResultCallback = (error: Error | null, results: Result[] | null) => void;
export declare const amount_max: bigint;
export declare const ErrorCodes: {
    readonly ERR_CLIENT_CLOSED: "ERR_CLIENT_CLOSED";
    readonly ERR_CLIENT_EVICTED: "ERR_CLIENT_EVICTED";
    readonly ERR_CLIENT_RELEASE_TOO_LOW: "ERR_CLIENT_RELEASE_TOO_LOW";
    readonly ERR_CLIENT_RELEASE_TOO_HIGH: "ERR_CLIENT_RELEASE_TOO_HIGH";
    readonly ERR_TOO_MUCH_DATA: "ERR_TOO_MUCH_DATA";
};
export type ErrorCodes = typeof ErrorCodes[keyof typeof ErrorCodes];
export declare class RequestError extends Error {
    code: ErrorCodes;
    constructor(code: ErrorCodes);
    static errorMessage(code: ErrorCodes): string;
}
export interface ClientInitArgs {
    cluster_id: bigint;
    replica_addresses: Array<string | number>;
}
export interface Client {
    createAccounts: (batch: Account[]) => Promise<CreateAccountResult[]>;
    createTransfers: (batch: Transfer[]) => Promise<CreateTransferResult[]>;
    lookupAccounts: (batch: AccountID[]) => Promise<Account[]>;
    lookupTransfers: (batch: TransferID[]) => Promise<Transfer[]>;
    getAccountTransfers: (filter: AccountFilter) => Promise<Transfer[]>;
    getAccountBalances: (filter: AccountFilter) => Promise<AccountBalance[]>;
    queryAccounts: (filter: QueryFilter) => Promise<Account[]>;
    queryTransfers: (filter: QueryFilter) => Promise<Transfer[]>;
    destroy: () => void;
}
export declare function createClient(args: ClientInitArgs): Client;
export declare function id(): bigint;
