import { type Address } from '@solana/kit';
import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@hyperlane-xyz/provider-sdk/artifact';
import type { MultisigIsmConfig } from '@hyperlane-xyz/provider-sdk/ism';
import type { SvmSigner } from '../clients/signer.js';
import type { AnnotatedSvmTransaction, SvmDeployedIsm, SvmProgramTarget, SvmReceipt, SvmRpc } from '../types.js';
export interface SvmMultisigIsmConfig extends MultisigIsmConfig {
    program: SvmProgramTarget;
    domains?: Record<number, {
        validators: string[];
        threshold: number;
    }>;
}
export declare class SvmMessageIdMultisigIsmReader implements ArtifactReader<MultisigIsmConfig, SvmDeployedIsm> {
    protected readonly rpc: SvmRpc;
    constructor(rpc: SvmRpc);
    read(address: string): Promise<ArtifactDeployed<MultisigIsmConfig, SvmDeployedIsm>>;
    readDomain(programId: Address, domain: number): Promise<{
        validators: string[];
        threshold: number;
    } | null>;
}
export declare class SvmMessageIdMultisigIsmWriter extends SvmMessageIdMultisigIsmReader implements ArtifactWriter<MultisigIsmConfig, SvmDeployedIsm> {
    private readonly svmSigner;
    constructor(rpc: SvmRpc, svmSigner: SvmSigner);
    create(artifact: ArtifactNew<MultisigIsmConfig>): Promise<[
        ArtifactDeployed<MultisigIsmConfig, SvmDeployedIsm>,
        SvmReceipt[]
    ]>;
    update(artifact: ArtifactDeployed<MultisigIsmConfig, SvmDeployedIsm>): Promise<AnnotatedSvmTransaction[]>;
    private getUpdateDomainTxs;
    getUpdateDomainTx(programId: Address, domain: number, validators: string[], threshold: number): Promise<AnnotatedSvmTransaction>;
}
//# sourceMappingURL=multisig-ism.d.ts.map