import { EscrowClient } from './client.js';
import { EventEmitter } from './emitter.js';
import { EscrowSigner } from './signer.js';
import { ContractData, DepositAccount, DepositData, DepositDigest, DepositStatus, TxOutput } from '../../types/index.js';
interface EscrowDepositConfig {
    refresh_ival: number;
    verbose: boolean;
}
export declare class EscrowDeposit extends EventEmitter<{
    'error': unknown;
    'fetch': EscrowDeposit;
    'status': DepositStatus;
    'update': EscrowDeposit;
}> {
    static create(client: EscrowClient, account: DepositAccount, utxo: TxOutput, config?: Partial<EscrowDepositConfig>): Promise<EscrowDeposit>;
    static fetch(client: EscrowClient, dpid: string, config?: Partial<EscrowDepositConfig>): Promise<EscrowDeposit>;
    readonly _client: EscrowClient;
    readonly _opt: EscrowDepositConfig;
    _data: DepositData;
    _init: boolean;
    _updated: number;
    constructor(client: EscrowClient, deposit: DepositData, config?: Partial<EscrowDepositConfig>);
    get dpid(): string;
    get client(): EscrowClient;
    get data(): DepositData;
    get opt(): EscrowDepositConfig;
    get is_stale(): boolean;
    get status(): DepositStatus;
    get updated_at(): number;
    _fetch(force?: boolean): Promise<this>;
    _read(): Promise<DepositData>;
    _status(): Promise<import("../../types/index.js").DepositStatusResponse>;
    _update(updated: DepositData | DepositDigest): Promise<void>;
    close(signer: EscrowSigner, txfee: number): Promise<this>;
    fetch(force?: boolean): Promise<this>;
    lock(contract: ContractData, signer: EscrowSigner): Promise<this>;
    poll(status: DepositStatus, retries: number): Promise<this>;
    toJSON(): DepositData;
    toString(): string;
}
export {};
