@hyperlane-xyz/sdk
Version:
The official SDK for the Hyperlane Network
59 lines • 3.26 kB
TypeScript
import { PublicKey, TransactionInstruction } from '@solana/web3.js';
import { Address, Domain } from '@hyperlane-xyz/utils';
import { BaseSealevelAdapter } from '../../app/MultiProtocolApp.js';
import type { MultiProviderAdapter } from '../../providers/MultiProviderAdapter.js';
import { ChainName } from '../../types.js';
export declare class SealevelMultisigAdapter extends BaseSealevelAdapter {
readonly chainName: ChainName;
readonly multiProvider: MultiProviderAdapter;
readonly addresses: {
multisigIsm: Address;
};
protected readonly multisigIsm: PublicKey;
constructor(chainName: ChainName, multiProvider: MultiProviderAdapter, addresses: {
multisigIsm: Address;
});
/**
* Create a SetValidatorsAndThreshold instruction
* @param multisigIsmProgramId - The MultisigIsm program ID
* @param accessControlPda - The access control PDA account
* @param domainDataPda - The domain data PDA account (will be created if doesn't exist)
* @param owner - The current owner who can set validators
* @param domain - The remote domain for which validators are being set
* @param validators - Array of 20-byte validator addresses (Ethereum-style addresses)
* @param threshold - The number of validator signatures required
* @returns TransactionInstruction
*/
createSetValidatorsAndThresholdInstruction(multisigIsmProgramId: PublicKey, accessControlPda: PublicKey, domainDataPda: PublicKey, owner: PublicKey, domain: Domain, validators: Uint8Array[], threshold: number): TransactionInstruction;
/**
* Create a TransferOwnership instruction
* @param multisigIsmProgramId - The MultisigIsm program ID
* @param accessControlPda - The access control PDA account
* @param owner - The current owner
* @param newOwner - The new owner (null to renounce ownership)
* @returns TransactionInstruction
*/
createTransferOwnershipInstruction(multisigIsmProgramId: PublicKey, accessControlPda: PublicKey, owner: PublicKey, newOwner: PublicKey | null): TransactionInstruction;
/**
* Helper method to convert hex string validators to Uint8Array format
* @param hexValidators - Array of validator addresses as hex strings (with or without 0x prefix)
* @returns Array of 20-byte Uint8Arrays
*/
static hexValidatorsToUint8Array(hexValidators: string[]): Uint8Array[];
/**
* Derive the domain data PDA for a given domain
* Matches: rust/sealevel/programs/ism/multisig-ism-message-id/src/processor.rs domain_data_pda_seeds!
* @param multisigIsmProgramId - The MultisigIsm program ID
* @param domain - The domain
* @returns PublicKey for the domain data PDA
*/
static deriveDomainDataPda(multisigIsmProgramId: string | PublicKey, domain: Domain): PublicKey;
/**
* Derive the access control PDA
* Matches: rust/sealevel/programs/ism/multisig-ism-message-id/src/processor.rs access_control_pda_seeds!
* @param multisigIsmProgramId - The MultisigIsm program ID
* @returns PublicKey for the access control PDA
*/
static deriveAccessControlPda(multisigIsmProgramId: string | PublicKey): PublicKey;
}
//# sourceMappingURL=SealevelMultisigAdapter.d.ts.map