import { Buff, Bytes } from '@cmdcode/buff';
import { EscrowClient } from './client.js';
import { SignerConfig } from '../types.js';
import { CredSignerAPI, Network, WalletAPI } from '../../types/index.js';
export declare class EscrowSigner {
    static create(config: Partial<SignerConfig>, seed: Bytes, xpub?: string): EscrowSigner;
    static generate(config: Partial<SignerConfig>, xpub?: string): EscrowSigner;
    static import(config: Partial<SignerConfig>, xpub?: string): {
        from_phrase: (phrase: string, salt?: string | undefined) => EscrowSigner;
        from_words: (words: string | string[], password?: string | undefined) => EscrowSigner;
    };
    static load(config: Partial<SignerConfig>, password: string, payload: string): EscrowSigner;
    static util: {
        gen_seed: (size?: number | undefined) => Buff;
        gen_words: typeof import("@cmdcode/signer").gen_seed_words;
    };
    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 network(): Network;
    get pubkey(): string;
    account: {
        create: (locktime: number, index?: number | undefined) => import("../../types/index.js").AccountRequest;
        verify: (account: import("../../types/index.js").DepositAccount) => boolean;
        close: (deposit: import("../../types/index.js").DepositData, txfee: number) => import("../../types/index.js").CloseRequest;
        commit: (account: import("../../types/index.js").DepositAccount, contract: import("../../types/index.js").ContractData, utxo: import("../../types/index.js").TxOutput) => import("../../types/index.js").CovenantData;
        lock: (contract: import("../../types/index.js").ContractData, deposit: import("../../types/index.js").DepositData) => import("../../types/index.js").CovenantData;
    };
    membership: {
        claim: (proposal: import("../../types/index.js").ProposalData) => import("../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;
    };
    has_account(xpub: string): boolean;
    get_account(idx?: number): WalletAPI;
    save(password: string): string;
}
