import { APIClient } from "../../../api/Client.js";
import { NameType } from "../../../chain/Name.js";
import { MsigInvalidation, MsigProposal } from "./Structs.js";
import type { ListProposalScopesOptions, ListProposalsOptions, MsigApprovalsResult, MsigCapabilities, MsigClientOptions, MsigReadStrategy, ProposalDetail } from "./Types.js";
/** Decodes the return value emitted by read-only `sysio.msig::getproposal`. */
export declare function decodeReadOnlyProposalReturn(response: any): MsigProposal;
/** Client for UI-neutral `sysio.msig` reads and proposal detail shaping. */
export declare class MsigClient {
    /** Chain API client used for RPC calls. */
    readonly client: APIClient;
    /** Multisig contract account. */
    readonly contract: NameType;
    private readonly configuredReadStrategy;
    private capabilities;
    /** Creates a multisig client. */
    constructor(config: MsigClientOptions);
    /** Returns cached ABI-derived `sysio.msig` capabilities. */
    getCapabilities(): Promise<MsigCapabilities>;
    /** Returns the detected contract profile. */
    getProfile(): Promise<MsigCapabilities["profile"]>;
    /** Returns the selected read strategy after applying configuration and ABI support. */
    getReadStrategy(): Promise<MsigReadStrategy>;
    /** Lists proposer scopes with entries in the `proposal` table. */
    listProposalScopes(options?: ListProposalScopesOptions): Promise<string[]>;
    /** Reads a proposal row or reassembled chunked proposal. */
    getProposal(proposer: NameType, proposalName: NameType): Promise<MsigProposal>;
    /** Reads a proposal with decoded transaction, hash, approvals, and status data. */
    getProposalDetail(proposer: NameType, proposalName: NameType): Promise<ProposalDetail>;
    /** Lists proposals in a single proposer scope. */
    listProposals(proposer: NameType, options?: ListProposalsOptions): Promise<MsigProposal[]>;
    /** Reads modern approvals and falls back to legacy approvals when needed. */
    getApprovals(proposer: NameType, proposalName: NameType): Promise<MsigApprovalsResult | null>;
    /** Reads an account invalidation row, when present. */
    getInvalidation(account: NameType): Promise<MsigInvalidation | null>;
    private readProposalWithCapabilities;
    private getProposalFromTables;
    private assembleChunkedProposalFromTables;
    private sendReadOnlyAction;
    private selectReadStrategy;
    private getExactScopedRow;
    private getScopedRows;
}
//# sourceMappingURL=Client.d.ts.map