import { Hex } from 'viem'; import { OperationKeyReader, VaultRegistryReader } from '../../clients/eth/types'; import { ParticipantKeySet } from '../participants/types'; /** * Participant operation keys drifted between building the Bitcoin artifacts * and the vault freezing its epochs. * * A *sibling* of `RegisteredVaultVersionMismatchError`, never a subclass, and * the distinction is load-bearing. On a version mismatch the orchestrator drops * the local pending-pegin record, because the on-chain `prePeginTxHash` is * still the authoritative copy of the transaction and a later resume can safely * broadcast it from the indexer. * * Key drift breaks exactly that assumption. The registered hash commits to a * transaction whose scripts embed the *pre-rotation* keys, while the vault * froze the *post-rotation* epoch — so every counterparty resolves a different * funding output and the deposit can never activate. Dropping the record would * discard `buildParticipantOperationKeys`, the only thing that lets the resume * path re-detect the drift; the next attempt would fall back to the indexer's * copy, pass the hash check, and broadcast the very transaction this refused, * locking BTC until the refund timelock. * * So: callers must keep the pending record when they catch this. */ export declare class ParticipantKeyDriftError extends Error { constructor(message: string); } export declare function isParticipantKeyDriftError(err: unknown): err is ParticipantKeyDriftError; export interface VerifyRegisteredParticipantKeysParams { vaultRegistryReader: VaultRegistryReader; operationKeyReader: OperationKeyReader; vaultIds: readonly Hex[]; /** * The exact key set the BTC artifacts were built with. Its `query` supplies * the rosters to re-resolve against — deliberately reused rather than * accepted as a separate argument, so the two can never disagree and a * roster that moved since the build cannot be misreported as a key drift. */ expected: ParticipantKeySet; } export declare function verifyRegisteredParticipantKeys(params: VerifyRegisteredParticipantKeysParams): Promise; //# sourceMappingURL=verifyRegisteredParticipantKeys.d.ts.map