import { Address } from 'viem'; import { OperationKeyReader, UniversalChallengerReader, VaultKeeperReader, VaultRegistryReader } from '../../clients/eth/types'; import { ParticipantKeySet } from '../participants/types'; export interface ValidateOnChainParticipantKeysParams { vaultRegistryReader: VaultRegistryReader; vaultKeeperReader: VaultKeeperReader; universalChallengerReader: UniversalChallengerReader; vaultProviderEthAddress: Address; applicationEntryPoint: Address; expectedVaultProviderBtcPubkey: string; expectedVaultKeeperBtcPubkeys: string[]; expectedUniversalChallengerBtcPubkeys: string[]; /** * RFC-006. Participant keys are resolved to their *current operation* keys, * and those are what the returned key fields carry. */ operationKeyReader: OperationKeyReader; /** * Optional observer for the case where the indexer hint matched the * operation keys rather than the registration keys — i.e. the indexer is * ahead of us, not wrong. Called at most once. */ onIndexerServingOperationKeys?: (message: string) => void; /** * Optional observer for the case where the indexer is serving a half-applied * view — one role explainable only by the registration keys, another only by * the operation keys. That blocks every deposit for the provider until the * indexer converges, and "Refresh and try again" cannot help, so the block * needs to be visible rather than showing up only as user reports. Called * immediately before the throw. */ onIndexerHintsInconsistent?: (message: string) => void; } export interface ValidatedOnChainParticipantKeys { /** The VP key to build with: its current operation key. */ vaultProviderBtcPubkeyXOnly: string; vaultKeeperBtcPubkeysSorted: string[]; universalChallengerBtcPubkeysSorted: string[]; expectedAppVaultKeepersVersion: number; expectedUniversalChallengersVersion: number; /** * The registration / roster keys, sorted. These are what indexer hints are * compared against first, and they stay available for diagnostics after * resolution. */ registrationKeys: { vaultProvider: string; vaultKeepers: string[]; universalChallengers: string[]; }; /** * The full resolution, including the admin↔key pairing. Feeds the * post-registration read-after-mine verification. */ participantKeys: ParticipantKeySet; } export declare function validateOnChainParticipantKeys(params: ValidateOnChainParticipantKeysParams): Promise; //# sourceMappingURL=validateOnChainParticipantKeys.d.ts.map