import { EscrowClient } from './client.js';
import { EventEmitter } from './emitter.js';
import { ContractVM } from './machine.js';
import { EscrowSigner } from './signer.js';
import { ContractData, ContractDigest, ContractStatus, DraftData, FundDigest } from '../../types/index.js';
interface EscrowContractConfig {
    refresh_ival: number;
    verbose: boolean;
}
export declare class EscrowContract extends EventEmitter<{
    'error': unknown;
    'fetch': EscrowContract;
    'fund': FundDigest;
    'status': ContractStatus;
    'update': EscrowContract;
}> {
    static create(client: EscrowClient, draft: DraftData, config?: Partial<EscrowContractConfig>): Promise<EscrowContract>;
    static fetch(client: EscrowClient, cid: string, config?: Partial<EscrowContractConfig>): Promise<EscrowContract>;
    readonly _client: EscrowClient;
    readonly _opt: EscrowContractConfig;
    _data: ContractData;
    _init: boolean;
    _updated: number;
    constructor(client: EscrowClient, contract: ContractData, config?: Partial<EscrowContractConfig>);
    get cid(): string;
    get client(): EscrowClient;
    get data(): ContractData;
    get funds(): Promise<FundDigest[]>;
    get opt(): EscrowContractConfig;
    get is_stale(): boolean;
    get status(): ContractStatus;
    get updated_at(): number;
    get vm(): ContractVM;
    _fetch(force?: boolean): Promise<this>;
    _read(): Promise<ContractData>;
    _status(): Promise<import("../../types/index.js").ContractStatusResponse>;
    _update(updated: ContractData | ContractDigest): Promise<void>;
    cancel(signer: EscrowSigner): Promise<this>;
    fetch(force?: boolean): Promise<this>;
    poll(status: ContractStatus, retries: number): Promise<this>;
    toJSON(): ContractData;
    toString(): string;
}
export {};
