import { Network } from '../../types/index.js';
import { ClientConfig, FetchConfig } from '../../client/types.js';
type Resolver = ReturnType<typeof get_fetcher>;
export declare class EscrowClient {
    readonly _fetcher: Resolver;
    readonly _host: string;
    readonly _oracle: string;
    readonly _network: Network;
    constructor(config: ClientConfig);
    get fetcher(): <T>(config: FetchConfig) => Promise<import("../../types/index.js").ApiResponse<T>>;
    get host(): string;
    get network(): Network;
    contract: {
        cancel: (cid: string, token: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").ContractDataResponse>>;
        create: (session: Partial<import("../../types/index.js").DraftData>) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").ContractDataResponse>>;
        digest: (cid: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").ContractDigestResponse>>;
        funds: (cid: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").FundListResponse>>;
        list: (pubkey: string, token: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").ContractListResponse>>;
        read: (cid: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").ContractDataResponse>>;
        status: (cid: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").ContractStatusResponse>>;
        submit: (cid: string, witness: import("../../types/index.js").WitnessData) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").ContractDataResponse>>;
        vmstate: (cid: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").ContractVMStateResponse>>;
        witness: (cid: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").WitnessListResponse>>;
    };
    deposit: {
        request: (request: import("../../types/index.js").AccountRequest) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").AccountDataResponse>>;
        register: (request: import("../../types/index.js").RegisterRequest) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").DepositDataResponse>>;
        commit: (request: import("../../types/index.js").CommitRequest) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").FundingDataResponse>>;
        digest: (dpid: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").DepositDigestResponse>>;
        status: (dpid: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").DepositStatusResponse>>;
        list: (pubkey: string, token: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").DepositListResponse>>;
        read: (dpid: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").DepositDataResponse>>;
        lock: (dpid: string, request: import("../../types/index.js").LockRequest) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").FundingDataResponse>>;
        close: (dpid: string, request: import("../../types/index.js").CloseRequest) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").DepositDataResponse>>;
    };
    oracle: {
        broadcast_tx: (txhex: string) => Promise<import("../../types/index.js").ApiResponse<string>>;
        fee_estimates: () => Promise<import("../../types/index.js").OracleFeeEstimate>;
        fee_target: (target: number) => Promise<number>;
        get_txdata: (txid: string) => Promise<import("../../types/index.js").OracleTxData | null>;
        get_utxo: (query: import("../../types/index.js").OracleQuery) => Promise<import("../../types/index.js").OracleSpendData | null>;
        get_address_utxos: (address: string) => Promise<import("../../types/index.js").OracleSpendData[]>;
        poll_address: (address: string, interval: number, retries: number, verbose?: boolean) => Promise<import("../../types/index.js").OracleSpendData[]>;
    };
    server: {
        keys: () => Promise<import("../../types/index.js").ApiResponse<import("../../types/api/server.js").ServerKeysResponse>>;
        policy: () => Promise<import("../../types/index.js").ApiResponse<import("../../types/api/server.js").ServerPolicyResponse>>;
        status: () => Promise<import("../../types/index.js").ApiResponse<import("../../types/api/server.js").ServerStatusResponse>>;
    };
    witness: {
        read: (wid: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").WitnessDataResponse>>;
    };
    toJSON(): {
        host: string;
    };
    toString(): string;
}
export declare function get_fetcher(fetcher: typeof fetch): <T>(config: FetchConfig) => Promise<import("../../types/index.js").ApiResponse<T>>;
export {};
