import type { APIClient } from "../../api/Client.js";
import type { NameType } from "../../chain/Name.js";
import { ContractClient, type ContractDescriptor } from "../Contract.js";
export * as msig from "./msig/index.js";
/** System contract descriptors available to the generic client factory. */
export declare const descriptors: {
    readonly msig: ContractDescriptor<import("./msig/Descriptor.js").SysioMsigActionData, import("./msig/Descriptor.js").SysioMsigTableRows>;
};
/** Friendly system contract names registered with this package. */
export type SystemContractName = keyof typeof descriptors;
/** Descriptor registered for a friendly system contract name. */
export type SystemContractDescriptor<TName extends SystemContractName> = (typeof descriptors)[TName];
/** Typed client derived from a registered system contract descriptor. */
export type SystemContractClient<TName extends SystemContractName> = SystemContractDescriptor<TName> extends ContractDescriptor<infer TActions, infer TTables> ? ContractClient<TActions, TTables> : never;
/** Options for creating a registered system contract client. */
export interface SystemContractClientOptions<TName extends SystemContractName> {
    /** Chain API client used for RPC reads. */
    client: APIClient;
    /** Friendly system contract name. */
    name: TName;
    /** Optional account override for deployments that do not use the default system account. */
    contract?: NameType;
}
/** Creates a typed client for a registered system contract descriptor. */
export declare function createClient<TName extends SystemContractName>(options: SystemContractClientOptions<TName>): SystemContractClient<TName>;
//# sourceMappingURL=index.d.ts.map