import { Buff, Bytes } from '@cmdcode/buff';
import { EscrowClient } from './client.js';
import { SignerConfig } from '../types.js';
import { CredentialAPI, 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: CredentialAPI;
    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").CommitRequest;
        lock: (contract: import("../../types/index.js").ContractData, deposit: import("../../types/index.js").DepositData) => import("../../types/index.js").LockRequest;
    };
    credential: {
        claimable: (cred: import("../../types/index.js").MemberData) => boolean;
        claim: (members: import("../../types/index.js").MemberData[]) => import("../types.js").Membership;
        exists: (members: import("../../types/index.js").MemberData[]) => boolean;
        generate: (index?: number | undefined) => import("../../types/index.js").MemberData;
    };
    draft: {
        endorse: (draft: import("../../types/index.js").DraftData) => {
            signatures: string[];
            members: import("../../types/index.js").MemberData[];
            proposal: import("../../types/index.js").ProposalData;
            roles: import("../../types/index.js").RolePolicy[];
        };
        is_member: (members: import("../../types/index.js").MemberData[]) => boolean;
        join: (policy: import("../../types/index.js").RolePolicy, session: import("../../types/index.js").DraftData, index?: number | undefined) => import("../../types/index.js").DraftData;
        leave: (session: import("../../types/index.js").DraftData) => import("../../types/index.js").DraftData;
    };
    fetch: {
        contracts: () => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").ContractListResponse>>;
        deposits: () => Promise<import("../../types/index.js").ApiResponse<import("../../types/index.js").DepositListResponse>>;
    };
    request: {
        contract_list: () => string;
        contract_cancel: (cid: string) => string;
        deposit_list: () => string;
        get_token: (url: string, body?: string, method?: string) => string;
    };
    wallet: {
        has: (xpub: string) => boolean;
        get: (idx: number) => WalletAPI;
    };
    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;
}
