import { Bytes } from '@cmdcode/buff';
import { EscrowClient } from './client.js';
import { ClientConfig, SignerConfig } from '../../client/types.js';
import { CredSignerAPI, Network, WalletAPI } from '../../types/index.js';
export declare class EscrowSigner {
    static create(config: ClientConfig, seed: Bytes, xpub?: string): EscrowSigner;
    static load(config: ClientConfig, password: string, payload: string): EscrowSigner;
    readonly _client: EscrowClient;
    readonly _host_pub?: string;
    readonly _gen_idx: () => number;
    readonly _signer: CredSignerAPI;
    readonly _wallet: WalletAPI;
    constructor(config: SignerConfig);
    get client(): EscrowClient;
    get host_pub(): string | undefined;
    get pubkey(): string;
    deposit: {
        request_account: (locktime: number) => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").AccountDataResponse>>;
        verify_account: (account: import("../../types/index.js").DepositAccount) => void;
        register_utxo: (account: import("../../types/index.js").DepositAccount, utxo: import("../../types/index.js").TxOutput, txfee?: number | undefined) => Promise<string>;
        commit_utxo: (account: import("../../types/index.js").DepositAccount, contract: import("../../types/index.js").ContractData, utxo: import("../../types/index.js").TxOutput) => Promise<import("../../types/index.js").CovenantData>;
        commit_deposit: (contract: import("../../types/index.js").ContractData, deposit: import("../../types/index.js").DepositData) => Promise<import("../../types/index.js").CovenantData>;
        close_deposit: (deposit: import("../../types/index.js").DepositData, txfee: number, address?: string | undefined) => Promise<import("../../types/index.js").ReturnData>;
    };
    membership: {
        claim: (proposal: import("../../types/index.js").ProposalData) => import("../../client/types.js").Membership;
        exists: (proposal: import("../../types/index.js").ProposalData) => boolean;
        generate: (index?: number | undefined) => import("../../types/index.js").MemberData;
    };
    proposal: {
        endorse: (proposal: import("../../types/index.js").ProposalData) => string;
        is_member: (proposal: import("../../types/index.js").ProposalData) => boolean;
        join: (proposal: import("../../types/index.js").ProposalData, role: import("../../types/index.js").RolePolicy, index?: number | undefined) => {
            members: import("../../types/index.js").MemberData[];
            paths: import("../../types/index.js").PathEntry[];
            payments: import("../../types/index.js").PaymentEntry[];
            programs: import("../../types/index.js").ProgramTerms[];
            content?: string | undefined;
            deadline?: number | undefined;
            effective?: number | undefined;
            expires: number;
            feerate?: number | undefined;
            moderator?: string | undefined;
            network: Network;
            schedule: import("../../types/index.js").ScheduleTerms[];
            title: string;
            value: number;
            version: number;
        };
        leave: (proposal: import("../../types/index.js").ProposalData) => import("../../types/index.js").ProposalData;
    };
    request: {
        contracts: () => string;
        deposits: () => string;
        get_token: (url: string, body?: string, method?: string) => string;
    };
    witness: {
        can_sign: (contract: import("../../types/index.js").ContractData, template: import("../../types/index.js").WitnessData | import("../../types/index.js").WitnessTemplate) => boolean;
        endorse: (contract: import("../../types/index.js").ContractData, witness: import("../../types/index.js").WitnessData) => import("../../types/index.js").WitnessData;
        sign: (contract: import("../../types/index.js").ContractData, template: import("../../types/index.js").WitnessTemplate) => import("../../types/index.js").WitnessData;
    };
    save(password: string): string;
}
