import type { Address, Instruction, ReadonlyUint8Array, TransactionSigner } from '@solana/kit';
import { type Domained, type H160, type ValidatorsAndThreshold } from '../codecs/shared.js';
export declare enum MultisigIsmMessageIdProgramInstructionKind {
    Initialize = 0,
    SetValidatorsAndThreshold = 1,
    GetOwner = 2,
    TransferOwnership = 3
}
export type MultisigIsmMessageIdProgramInstruction = {
    kind: 'initialize';
} | {
    kind: 'setValidatorsAndThreshold';
    value: Domained<ValidatorsAndThreshold>;
} | {
    kind: 'getOwner';
} | {
    kind: 'transferOwnership';
    newOwner: Address | null;
};
export declare function encodeMultisigIsmMessageIdProgramInstruction(instruction: MultisigIsmMessageIdProgramInstruction): ReadonlyUint8Array;
export declare function decodeMultisigIsmMessageIdProgramInstruction(data: Uint8Array): MultisigIsmMessageIdProgramInstruction | null;
export interface SetDomainValidatorsArgs {
    programAddress: Address;
    owner: TransactionSigner;
    domain: number;
    validators: (H160 | string)[];
    threshold: number;
}
export declare function getInitializeMultisigIsmMessageIdInstruction(programAddress: Address, owner: TransactionSigner): Promise<Instruction>;
export declare function getSetValidatorsAndThresholdInstruction(args: SetDomainValidatorsArgs): Promise<Instruction>;
export declare function getTransferOwnershipInstruction(programAddress: Address, owner: TransactionSigner, newOwner: Address | null): Promise<Instruction>;
//# sourceMappingURL=multisig-ism-message-id.d.ts.map