import { type Address, type DecodeFunctionDataReturnType, type Hex, type WalletClient } from "viem"; import type { RawTx } from "../../sdk/index.js"; import { BaseContract, type ChainContractsRegister, type ParsedCallArgs } from "../../sdk/index.js"; import type { Batch, RecoveryMessage } from "../core/proposal.js"; declare const abi: readonly [{ readonly type: "constructor"; readonly inputs: readonly [{ readonly name: "signers_"; readonly internalType: "address[]"; readonly type: "address[]"; }, { readonly name: "confirmationThreshold_"; readonly internalType: "uint8"; readonly type: "uint8"; }, { readonly name: "owner_"; readonly internalType: "address"; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "BATCH_TYPEHASH"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "COMPACT_BATCH_TYPEHASH"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "CROSS_CHAIN_CALL_TYPEHASH"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "RECOVERY_MODE_TYPEHASH"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "signer"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "addSigner"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "name"; readonly internalType: "string"; readonly type: "string"; }, { readonly name: "calls"; readonly internalType: "struct CrossChainCall[]"; readonly type: "tuple[]"; readonly components: readonly [{ readonly name: "chainId"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "target"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "callData"; readonly internalType: "bytes"; readonly type: "bytes"; }]; }, { readonly name: "prevHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly name: "computeBatchHash"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly stateMutability: "pure"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "name"; readonly internalType: "string"; readonly type: "string"; }, { readonly name: "batchHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "prevHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly name: "computeCompactBatchHash"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly stateMutability: "pure"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "call"; readonly internalType: "struct CrossChainCall"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "chainId"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "target"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "callData"; readonly internalType: "bytes"; readonly type: "bytes"; }]; }]; readonly name: "computeCrossChainCallHash"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly stateMutability: "pure"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "chainId"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "startingBatchHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly name: "computeRecoveryModeHash"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly stateMutability: "pure"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "confirmationThreshold"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "uint8"; readonly type: "uint8"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "contractType"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "chainId"; readonly internalType: "uint256"; readonly type: "uint256"; }]; readonly name: "disableRecoveryMode"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "domainSeparatorV4"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "eip712Domain"; readonly outputs: readonly [{ readonly name: "fields"; readonly internalType: "bytes1"; readonly type: "bytes1"; }, { readonly name: "name"; readonly internalType: "string"; readonly type: "string"; }, { readonly name: "version"; readonly internalType: "string"; readonly type: "string"; }, { readonly name: "chainId"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "verifyingContract"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "salt"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "extensions"; readonly internalType: "uint256[]"; readonly type: "uint256[]"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "message"; readonly internalType: "struct SignedRecoveryModeMessage"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "chainId"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "startingBatchHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "signatures"; readonly internalType: "bytes[]"; readonly type: "bytes[]"; }]; }]; readonly name: "enableRecoveryMode"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "signedBatch"; readonly internalType: "struct SignedBatch"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "name"; readonly internalType: "string"; readonly type: "string"; }, { readonly name: "prevHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "calls"; readonly internalType: "struct CrossChainCall[]"; readonly type: "tuple[]"; readonly components: readonly [{ readonly name: "chainId"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "target"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "callData"; readonly internalType: "bytes"; readonly type: "bytes"; }]; }, { readonly name: "signatures"; readonly internalType: "bytes[]"; readonly type: "bytes[]"; }]; }]; readonly name: "executeBatch"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "batchHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly name: "getBatch"; readonly outputs: readonly [{ readonly name: "result"; readonly internalType: "struct SignedBatch"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "name"; readonly internalType: "string"; readonly type: "string"; }, { readonly name: "prevHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "calls"; readonly internalType: "struct CrossChainCall[]"; readonly type: "tuple[]"; readonly components: readonly [{ readonly name: "chainId"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "target"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "callData"; readonly internalType: "bytes"; readonly type: "bytes"; }]; }, { readonly name: "signatures"; readonly internalType: "bytes[]"; readonly type: "bytes[]"; }]; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "batchHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly name: "getConnectedBatchHashes"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32[]"; readonly type: "bytes32[]"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "getCurrentBatchHashes"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32[]"; readonly type: "bytes32[]"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "getExecutedBatchHashes"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32[]"; readonly type: "bytes32[]"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "getSigners"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "address[]"; readonly type: "address[]"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "isRecoveryModeEnabled"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bool"; readonly type: "bool"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "isSigner"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bool"; readonly type: "bool"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "lastBatchHash"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "owner"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "address"; readonly type: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "signer"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "removeSigner"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "renounceOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "newConfirmationThreshold"; readonly internalType: "uint8"; readonly type: "uint8"; }]; readonly name: "setConfirmationThreshold"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "batchHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "signature"; readonly internalType: "bytes"; readonly type: "bytes"; }]; readonly name: "signBatch"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "name"; readonly internalType: "string"; readonly type: "string"; }, { readonly name: "calls"; readonly internalType: "struct CrossChainCall[]"; readonly type: "tuple[]"; readonly components: readonly [{ readonly name: "chainId"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "target"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "callData"; readonly internalType: "bytes"; readonly type: "bytes"; }]; }, { readonly name: "prevHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly name: "submitBatch"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly inputs: readonly [{ readonly name: "newOwner"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "transferOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly inputs: readonly []; readonly name: "version"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "uint256"; readonly type: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "signer"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }]; readonly name: "AddSigner"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly []; readonly name: "DisableRecoveryMode"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly []; readonly name: "EIP712DomainChanged"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "startingBatchHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; readonly indexed: true; }]; readonly name: "EnableRecoveryMode"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "batchHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; readonly indexed: true; }]; readonly name: "ExecuteBatch"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "previousOwner"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }, { readonly name: "newOwner"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }]; readonly name: "OwnershipTransferred"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "signer"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }]; readonly name: "RemoveSigner"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "newConfirmationThreshold"; readonly internalType: "uint8"; readonly type: "uint8"; readonly indexed: false; }]; readonly name: "SetConfirmationThreshold"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "batchHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; readonly indexed: true; }, { readonly name: "signer"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }]; readonly name: "SignBatch"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "batchHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; readonly indexed: true; }]; readonly name: "SubmitBatch"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "batchHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly name: "BatchIsNotSubmittedException"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "caller"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "CallerIsNotSelfException"; }, { readonly type: "error"; readonly inputs: readonly []; readonly name: "CantBeExecutedOnCurrentChainException"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "signer"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "DuplicateSignatureException"; }, { readonly type: "error"; readonly inputs: readonly []; readonly name: "InsufficientNumberOfSignaturesException"; }, { readonly type: "error"; readonly inputs: readonly []; readonly name: "InvalidBatchException"; }, { readonly type: "error"; readonly inputs: readonly []; readonly name: "InvalidConfirmationThresholdException"; }, { readonly type: "error"; readonly inputs: readonly []; readonly name: "InvalidPrevHashException"; }, { readonly type: "error"; readonly inputs: readonly []; readonly name: "InvalidRecoveryModeMessageException"; }, { readonly type: "error"; readonly inputs: readonly []; readonly name: "InvalidShortString"; }, { readonly type: "error"; readonly inputs: readonly []; readonly name: "InvalidSignerAddressException"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "signer"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "SignerIsAlreadyApprovedException"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "signer"; readonly internalType: "address"; readonly type: "address"; }]; readonly name: "SignerIsNotApprovedException"; }, { readonly type: "error"; readonly inputs: readonly [{ readonly name: "str"; readonly internalType: "string"; readonly type: "string"; }]; readonly name: "StringTooLong"; }]; export interface ConstructorParams { signers: Address[]; threshold: number; dao: Address; } export interface Proposal { name: string; calls: { chainId: bigint; target: Hex; callData: Hex; }[]; } export declare class CrossChainMultisigContract extends BaseContract { #private; constructor(addr: Address, register: ChainContractsRegister); getExecutedBatches(fromBlock: bigint, toBlock: bigint): Promise[]>; getCurrentBatches(): Promise; getBatchData(args: { proposalHash: Hex; blockNumber?: number; transactionHash?: Hex; timestamp?: number; }): Promise; computeEIP712digest(name: string, batchHash: Hex, prevHash: Hex): { readonly domain: { readonly name: "CROSS_CHAIN_MULTISIG"; readonly version: "310"; readonly chainId: 1; readonly verifyingContract: `0x${string}`; }; readonly types: { readonly CompactBatch: readonly [{ readonly name: "name"; readonly type: "string"; }, { readonly name: "batchHash"; readonly type: "bytes32"; }, { readonly name: "prevHash"; readonly type: "bytes32"; }]; }; readonly primaryType: "CompactBatch"; readonly message: { readonly name: string; readonly batchHash: `0x${string}`; readonly prevHash: `0x${string}`; }; }; computeRecoveryDigest(chainId: number, startingBatchHash: Hex): { readonly domain: { readonly name: "CROSS_CHAIN_MULTISIG"; readonly version: "310"; readonly chainId: 1; readonly verifyingContract: `0x${string}`; }; readonly types: { readonly RecoveryMode: readonly [{ readonly name: "chainId"; readonly type: "uint256"; }, { readonly name: "startingBatchHash"; readonly type: "bytes32"; }]; }; readonly primaryType: "RecoveryMode"; readonly message: { readonly chainId: bigint; readonly startingBatchHash: `0x${string}`; }; }; signBatch(batchHash: Hex, signature: Hex, sponsor: WalletClient): Promise; enableRecovery(recovery: RecoveryMessage, sponsor: WalletClient): Promise<`0x${string}`>; getConfirmationThreshold(): Promise; getSigners(): Promise; protected parseFunctionParams(params: DecodeFunctionDataReturnType): ParsedCallArgs; validateProposalSignature(proposalHash: Hex, signature: Hex): Promise<{ success: boolean; error?: string; }>; getSignerFromSignature(proposalName: string, proposalHash: Hex, prevHash: Hex, signature: Hex): Promise<`0x${string}`>; executeProposal(signedProposal: { name: string; prevHash: Hex; calls: { chainId: bigint; target: Hex; callData: Hex; }[]; signatures: Hex[]; }, sponsor: WalletClient): Promise<`0x${string}`>; wrapSubmitBatch(args: { proposal: Proposal; prevHash: Hex; }): RawTx; executeProposalTx(signedProposal: { name: string; prevHash: Hex; calls: { chainId: bigint; target: Hex; callData: Hex; }[]; signatures: Hex[]; }): RawTx; submitBatch(proposal: { name: string; calls: { chainId: bigint; target: Hex; callData: Hex; }[]; }, sponsor: WalletClient): Promise<`0x${string}`>; getLastBatchHash(): Promise; computeBatchHash(args: { proposal: Proposal; prevHash: Hex; }): Promise; getConstructorParams(): Promise; } export {};