import { EscrowClient } from './client.js';
import { EventEmitter } from './emitter.js';
import { ContractVM } from './machine.js';
import { EscrowSigner } from './signer.js';
import { ContractData, ContractStatus, DraftData } from '../../types/index.js';
interface EscrowContractConfig {
    refresh_ival: number;
    verbose: boolean;
}
export declare class EscrowContract extends EventEmitter<{
    'error': unknown;
    'fetch': EscrowContract;
    '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;
    _updated: number;
    constructor(client: EscrowClient, contract: ContractData, config?: Partial<EscrowContractConfig>);
    get cid(): string;
    get client(): EscrowClient;
    get data(): ContractData;
    get funds(): Promise<import("../../types/index.js").DepositDigest[]>;
    get opt(): EscrowContractConfig;
    get is_stale(): boolean;
    get status(): ContractStatus;
    get updated_at(): number;
    get vm(): ContractVM;
    _digest(): Promise<ContractData>;
    _fetch(): Promise<this>;
    _read(): Promise<ContractData>;
    _status(): Promise<import("../../types/index.js").RecordStatus<ContractStatus>>;
    _update(data: ContractData): void;
    cancel(signer: EscrowSigner): Promise<this>;
    fetch(): Promise<this>;
    poll(status: ContractStatus, interval: number, retries: number): Promise<this>;
    moderator: {};
    toJSON(): ContractData;
    toString(): string;
}
export {};
