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: {
        create: (proposal: import("../../types/index.js").ProposalData, signatures?: string[] | undefined) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").ContractDataResponse>>;
        funds: (cid: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").DepositListResponse>>;
        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>>;
        submit: (cid: string, witness: import("../../types/index.js").WitnessData) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").ContractDataResponse>>;
        witness: (cid: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").WitnessListResponse>>;
    };
    deposit: {
        read: (dpid: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").DepositDataResponse>>;
        list: (pubkey: string, token: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").DepositListResponse>>;
        commit: (dpid: string, covenant: import("../../types/index.js").CovenantData) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").FundingDataResponse>>;
        fund: (agent_id: string, return_tx: string, covenant: import("../../types/index.js").CovenantData) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").FundingDataResponse>>;
        register: (agent_id: string, return_tx: string) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").DepositDataResponse>>;
        request: (req: import("../../types/index.js").DepositRequest) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").AccountDataResponse>>;
        close: (req: import("../../types/index.js").ReturnData) => 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[]>;
    };
    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 {};
