@babylonlabs-io/ts-sdk 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/PayoutManager-BUWP-H-q.js.map +1 -1
  2. package/dist/PayoutManager-Dopxq_Jv.cjs.map +1 -1
  3. package/dist/PeginManager-CMbRRTnr.cjs.map +1 -1
  4. package/dist/PeginManager-Cas6_j7t.js.map +1 -1
  5. package/dist/{buildAndBroadcastReclaim-XRWuJWVL.js → buildAndBroadcastReclaim-ByXYSUwj.js} +368 -331
  6. package/dist/buildAndBroadcastReclaim-ByXYSUwj.js.map +1 -0
  7. package/dist/{buildAndBroadcastReclaim-CVmG3ldA.cjs → buildAndBroadcastReclaim-OBWjvzuC.cjs} +2 -2
  8. package/dist/buildAndBroadcastReclaim-OBWjvzuC.cjs.map +1 -0
  9. package/dist/challengeAssert-eUMgmpMk.cjs +2 -0
  10. package/dist/challengeAssert-eUMgmpMk.cjs.map +1 -0
  11. package/dist/{challengeAssert-DUKSjirl.js → challengeAssert-pJP7MKhG.js} +164 -164
  12. package/dist/challengeAssert-pJP7MKhG.js.map +1 -0
  13. package/dist/index.cjs +1 -1
  14. package/dist/index.js +58 -57
  15. package/dist/signer-set-reader-CJfV-GDz.cjs.map +1 -1
  16. package/dist/signer-set-reader-DiwLeqik.js.map +1 -1
  17. package/dist/tbv/core/clients/eth/operation-key-reader.d.ts +5 -1
  18. package/dist/tbv/core/clients/eth/operation-key-reader.d.ts.map +1 -1
  19. package/dist/tbv/core/clients/eth/signer-set-reader.d.ts.map +1 -1
  20. package/dist/tbv/core/clients/eth/types.d.ts +20 -0
  21. package/dist/tbv/core/clients/eth/types.d.ts.map +1 -1
  22. package/dist/tbv/core/clients/index.d.ts +4 -2
  23. package/dist/tbv/core/clients/index.d.ts.map +1 -1
  24. package/dist/tbv/core/deposit-terms/depositTerms.d.ts +6 -4
  25. package/dist/tbv/core/deposit-terms/depositTerms.d.ts.map +1 -1
  26. package/dist/tbv/core/index.cjs +1 -1
  27. package/dist/tbv/core/index.js +59 -58
  28. package/dist/tbv/core/managers/PayoutManager.d.ts +9 -3
  29. package/dist/tbv/core/managers/PayoutManager.d.ts.map +1 -1
  30. package/dist/tbv/core/managers/PeginManager.d.ts +13 -3
  31. package/dist/tbv/core/managers/PeginManager.d.ts.map +1 -1
  32. package/dist/tbv/core/primitives/challengers.d.ts +12 -5
  33. package/dist/tbv/core/primitives/challengers.d.ts.map +1 -1
  34. package/dist/tbv/core/primitives/index.cjs +1 -1
  35. package/dist/tbv/core/primitives/index.d.ts +1 -1
  36. package/dist/tbv/core/primitives/index.js +1 -1
  37. package/dist/tbv/core/primitives/psbt/pegin.d.ts +26 -4
  38. package/dist/tbv/core/primitives/psbt/pegin.d.ts.map +1 -1
  39. package/dist/tbv/core/primitives/psbt/refund.d.ts.map +1 -1
  40. package/dist/tbv/core/services/delegated-claim/challengerBinding.d.ts +3 -3
  41. package/dist/tbv/core/services/delegated-claim/challengerBinding.d.ts.map +1 -1
  42. package/dist/tbv/core/services/delegated-claim/types.d.ts +3 -3
  43. package/dist/tbv/core/services/delegated-claim/types.d.ts.map +1 -1
  44. package/dist/tbv/core/services/deposit/runDepositorPresignFlow.d.ts +19 -4
  45. package/dist/tbv/core/services/deposit/runDepositorPresignFlow.d.ts.map +1 -1
  46. package/dist/tbv/core/services/deposit/signDepositorGraph.d.ts +17 -3
  47. package/dist/tbv/core/services/deposit/signDepositorGraph.d.ts.map +1 -1
  48. package/dist/tbv/core/services/index.cjs +1 -1
  49. package/dist/tbv/core/services/index.js +43 -42
  50. package/dist/tbv/core/services/participants/readStampedParticipantKeys.d.ts +19 -7
  51. package/dist/tbv/core/services/participants/readStampedParticipantKeys.d.ts.map +1 -1
  52. package/dist/tbv/core/services/refund/__tests__/readRefundPrePeginContext.test.d.ts +12 -0
  53. package/dist/tbv/core/services/refund/__tests__/readRefundPrePeginContext.test.d.ts.map +1 -0
  54. package/dist/tbv/core/services/refund/buildAndBroadcastRefund.d.ts +41 -12
  55. package/dist/tbv/core/services/refund/buildAndBroadcastRefund.d.ts.map +1 -1
  56. package/dist/tbv/core/services/refund/index.d.ts +1 -0
  57. package/dist/tbv/core/services/refund/index.d.ts.map +1 -1
  58. package/dist/tbv/core/services/refund/readRefundPrePeginContext.d.ts +41 -0
  59. package/dist/tbv/core/services/refund/readRefundPrePeginContext.d.ts.map +1 -0
  60. package/dist/tbv/index.cjs +1 -1
  61. package/dist/tbv/index.js +59 -58
  62. package/dist/types-BnZIbDHb.cjs.map +1 -1
  63. package/dist/types-K_aM5GZO.js.map +1 -1
  64. package/dist/verifyScriptPathSchnorrSignature-CgDa9Rcg.cjs.map +1 -1
  65. package/dist/verifyScriptPathSchnorrSignature-D-fdi-sG.js.map +1 -1
  66. package/package.json +2 -2
  67. package/dist/buildAndBroadcastReclaim-CVmG3ldA.cjs.map +0 -1
  68. package/dist/buildAndBroadcastReclaim-XRWuJWVL.js.map +0 -1
  69. package/dist/challengeAssert-BE6Wm4x1.cjs +0 -2
  70. package/dist/challengeAssert-BE6Wm4x1.cjs.map +0 -1
  71. package/dist/challengeAssert-DUKSjirl.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"signer-set-reader-CJfV-GDz.cjs","sources":["../src/tbv/core/clients/eth/contract-address-resolver.ts","../src/tbv/core/clients/eth/operation-key-reader.ts","../src/tbv/core/clients/eth/signer-set-reader.ts"],"sourcesContent":["/**\n * Contract Address Resolver\n *\n * Resolves ProtocolParams and ApplicationRegistry contract addresses\n * from the BTCVaultRegistry contract. These addresses are needed to\n * construct the SDK's contract readers.\n *\n * @module clients/eth/contract-address-resolver\n */\n\nimport type { Address, PublicClient } from \"viem\";\n\nimport { BTCVaultRegistryABI } from \"../../contracts/abis/BTCVaultRegistry.abi\";\n\nexport interface ProtocolAddresses {\n /** Address of the ProtocolParams contract */\n protocolParams: Address;\n /** Address of the ApplicationRegistry contract */\n applicationRegistry: Address;\n}\n\n/**\n * Resolve ProtocolParams and ApplicationRegistry addresses from BTCVaultRegistry.\n *\n * Uses a single multicall for atomicity and efficiency.\n *\n * @param publicClient - viem PublicClient instance\n * @param btcVaultRegistryAddress - Address of the BTCVaultRegistry contract\n * @returns Resolved contract addresses\n */\nexport async function resolveProtocolAddresses(\n publicClient: PublicClient,\n btcVaultRegistryAddress: Address,\n): Promise<ProtocolAddresses> {\n const [protocolParams, applicationRegistry] = await publicClient.multicall({\n contracts: [\n {\n address: btcVaultRegistryAddress,\n abi: BTCVaultRegistryABI,\n functionName: \"protocolParams\",\n },\n {\n address: btcVaultRegistryAddress,\n abi: BTCVaultRegistryABI,\n functionName: \"applicationRegistry\",\n },\n ],\n allowFailure: false,\n });\n\n return {\n protocolParams: protocolParams as Address,\n applicationRegistry: applicationRegistry as Address,\n };\n}\n","/**\n * Concrete RFC-006 operation-key reader spanning all three registries.\n *\n * This is an optional utility — callers can use their own implementation of\n * the {@link OperationKeyReader} interface.\n */\n\nimport type { Abi, Address, Hex, PublicClient } from \"viem\";\n\nimport { ApplicationRegistryABI } from \"../../contracts/abis/ApplicationRegistry.abi\";\nimport { BTCVaultRegistryABI } from \"../../contracts/abis/BTCVaultRegistry.abi\";\nimport { ProtocolParamsABI } from \"../../contracts/abis/ProtocolParams.abi\";\nimport type {\n KeyEpochs,\n OperationKeyQuery,\n OperationKeyReader,\n RawOperationKeys,\n RawPayoutScripts,\n} from \"./types\";\n\n/** Addresses of the three registries an operation-key resolution spans. */\nexport interface OperationKeyContracts {\n btcVaultRegistry: Address;\n applicationRegistry: Address;\n protocolParams: Address;\n}\n\n/** One `multicall` entry. Loosely typed because the three ABIs differ. */\ntype Call = {\n address: Address;\n abi: Abi;\n functionName: string;\n args: readonly unknown[];\n};\n\n/**\n * Reject a multicall result that is not one-per-call.\n *\n * Every method here relies on positional alignment between calls and results,\n * so a short array does not fail — it silently hands back `undefined` for the\n * tail entries. Downstream that surfaces as a complaint about whichever\n * operator happens to occupy the missing slot, blaming a participant that is\n * perfectly fine for a read that came back incomplete. Assert the length where\n * the array arrives so the error names the real fault.\n */\nfunction assertMulticallLength(\n actual: number,\n expected: number,\n label: string,\n): void {\n if (actual !== expected) {\n throw new Error(\n `${label}: multicall returned ${actual} results for ${expected} calls, ` +\n `so the results are not roster-aligned; refusing to use them`,\n );\n }\n}\n\n/**\n * Split a flat multicall result into VP / keepers / challengers.\n *\n * Every method below builds its calls in the same order — vault provider\n * first, then keepers in roster order, then challengers in roster order — so\n * the results stay index-aligned with `query.vaultKeepers` /\n * `query.universalChallengers`. That alignment is what lets the resolver pair\n * a resolved key back to its admin address; the sorted key arrays it exposes\n * are derived from those pairs, never the other way round.\n */\nfunction partition<T>(\n results: readonly T[],\n keeperCount: number,\n): { vaultProvider: T; vaultKeepers: T[]; universalChallengers: T[] } {\n return {\n vaultProvider: results[0],\n vaultKeepers: results.slice(1, 1 + keeperCount),\n universalChallengers: results.slice(1 + keeperCount),\n };\n}\n\n/**\n * Reads RFC-006 operation keys and payout scripts.\n *\n * Usage:\n * ```ts\n * const reader = new ViemOperationKeyReader(publicClient, contracts);\n * const keys = await reader.getCurrentOperationKeys(query);\n * ```\n */\nexport class ViemOperationKeyReader implements OperationKeyReader {\n constructor(\n private publicClient: PublicClient,\n private contracts: OperationKeyContracts,\n ) {}\n\n /**\n * One multicall, `allowFailure: false`, so every key in the set is read at\n * the same block. A rotation landing between two separate `eth_call`s would\n * otherwise produce a mixed-epoch key set and a lock no counterparty agrees\n * with.\n */\n private async readAll<T>(\n calls: Call[],\n keeperCount: number,\n challengerCount: number,\n label: string,\n blockNumber?: bigint,\n ) {\n const results = (await this.publicClient.multicall({\n contracts: calls,\n allowFailure: false,\n blockNumber,\n })) as readonly T[];\n\n assertMulticallLength(\n results.length,\n 1 + keeperCount + challengerCount,\n label,\n );\n\n return partition(results, keeperCount);\n }\n\n async getCurrentOperationKeys(\n query: OperationKeyQuery,\n blockNumber?: bigint,\n ): Promise<RawOperationKeys> {\n const calls: Call[] = [\n {\n address: this.contracts.btcVaultRegistry,\n abi: BTCVaultRegistryABI as Abi,\n functionName: \"getCurrentOperationBtcKey\",\n args: [query.vaultProviderEthAddress],\n },\n ...query.vaultKeepers.map((keeper) => ({\n address: this.contracts.applicationRegistry,\n abi: ApplicationRegistryABI as Abi,\n functionName: \"getCurrentOperationBtcKey\",\n args: [query.applicationEntryPoint, keeper.ethAddress],\n })),\n ...query.universalChallengers.map((challenger) => ({\n address: this.contracts.protocolParams,\n abi: ProtocolParamsABI as Abi,\n functionName: \"getCurrentOperationBtcKey\",\n args: [challenger.ethAddress],\n })),\n ];\n\n return this.readAll<Hex>(\n calls,\n query.vaultKeepers.length,\n query.universalChallengers.length,\n \"getCurrentOperationKeys\",\n blockNumber,\n );\n }\n\n async getOperationKeysAtEpochs(\n query: OperationKeyQuery,\n epochs: KeyEpochs,\n ): Promise<RawOperationKeys> {\n const calls: Call[] = [\n // The VP takes the plain `AtEpoch` variant: it has no membership\n // version, so its genesis (the registration key at version 0) is\n // unambiguous and the contract resolves it internally.\n {\n address: this.contracts.btcVaultRegistry,\n abi: BTCVaultRegistryABI as Abi,\n functionName: \"getOperationBtcKeyAtEpoch\",\n args: [query.vaultProviderEthAddress, epochs.vpKeyEpoch],\n },\n // Keepers and challengers take `...OrGenesis` with their roster key\n // passed explicitly, because the correct genesis for them is their key\n // in *this vault's frozen membership version*. An operator dropped from\n // the current roster, or listed under a different key in an older\n // version, would otherwise resolve against the wrong genesis.\n ...query.vaultKeepers.map((keeper) => ({\n address: this.contracts.applicationRegistry,\n abi: ApplicationRegistryABI as Abi,\n functionName: \"getOperationBtcKeyAtEpochOrGenesis\",\n args: [\n query.applicationEntryPoint,\n keeper.ethAddress,\n epochs.appKeeperKeyEpoch,\n keeper.btcPubKey,\n ],\n })),\n ...query.universalChallengers.map((challenger) => ({\n address: this.contracts.protocolParams,\n abi: ProtocolParamsABI as Abi,\n functionName: \"getOperationBtcKeyAtEpochOrGenesis\",\n args: [challenger.ethAddress, epochs.ucKeyEpoch, challenger.btcPubKey],\n })),\n ];\n\n return this.readAll<Hex>(\n calls,\n query.vaultKeepers.length,\n query.universalChallengers.length,\n \"getOperationKeysAtEpochs\",\n );\n }\n\n async getPayoutScriptsAtEpochs(\n query: OperationKeyQuery,\n epochs: KeyEpochs,\n ): Promise<RawPayoutScripts> {\n // Universal challengers are never claimers, so they have no payout script\n // and no call here.\n const results = (await this.publicClient.multicall({\n contracts: [\n {\n address: this.contracts.btcVaultRegistry,\n abi: BTCVaultRegistryABI as Abi,\n functionName: \"getPayoutScriptAtEpoch\",\n args: [query.vaultProviderEthAddress, epochs.vpKeyEpoch],\n },\n ...query.vaultKeepers.map((keeper) => ({\n address: this.contracts.applicationRegistry,\n abi: ApplicationRegistryABI as Abi,\n functionName: \"getPayoutScriptAtEpoch\",\n args: [\n query.applicationEntryPoint,\n keeper.ethAddress,\n epochs.appKeeperKeyEpoch,\n ],\n })),\n ],\n allowFailure: false,\n })) as readonly Hex[];\n\n // Expected length is `1 + keepers`, with no challenger term — see the\n // comment above on why universal challengers have no call here.\n assertMulticallLength(\n results.length,\n 1 + query.vaultKeepers.length,\n \"getPayoutScriptsAtEpochs\",\n );\n\n return {\n vaultProvider: results[0],\n vaultKeepers: [...results.slice(1)],\n };\n }\n}\n","/**\n * Concrete signer-set readers for vault keepers and universal challengers.\n *\n * These are optional utilities — callers can use their own implementations\n * of the VaultKeeperReader and UniversalChallengerReader interfaces.\n */\n\nimport type { Address, Hex, PublicClient } from \"viem\";\n\nimport { ApplicationRegistryABI } from \"../../contracts/abis/ApplicationRegistry.abi\";\nimport { ProtocolParamsABI } from \"../../contracts/abis/ProtocolParams.abi\";\nimport type {\n AddressBTCKeyPair,\n UniversalChallengerReader,\n VaultKeeperReader,\n} from \"./types\";\n\n/** Map viem tuple array to AddressBTCKeyPair[]. */\nfunction mapKeyPairs(\n result: readonly { ethAddress: Address; btcPubKey: Hex }[],\n): AddressBTCKeyPair[] {\n return result.map((pair) => ({\n ethAddress: pair.ethAddress,\n btcPubKey: pair.btcPubKey,\n }));\n}\n\n/**\n * Both key-epoch getters return `uint64` and feed the peg-in config\n * fingerprint, where the contract encodes them as `uint64`. A `Number`\n * narrowing would silently truncate above 2^53 and produce a fingerprint the\n * registry cannot reproduce, so the payload is asserted to be a `bigint` and\n * carried as one — never coerced, never defaulted.\n */\nfunction assertKeyEpoch(raw: unknown, label: string): bigint {\n if (typeof raw !== \"bigint\") {\n throw new Error(\n `Invalid ${label} from contract: must be a bigint, got ${typeof raw}`,\n );\n }\n return raw;\n}\n\n/**\n * Reads vault keepers from the ApplicationRegistry contract.\n *\n * Usage:\n * ```ts\n * const reader = new ViemVaultKeeperReader(publicClient, applicationRegistryAddress);\n * const keepers = await reader.getCurrentVaultKeepers(appEntryPoint);\n * ```\n */\nexport class ViemVaultKeeperReader implements VaultKeeperReader {\n constructor(\n private publicClient: PublicClient,\n private contractAddress: Address,\n ) {}\n\n async getVaultKeepersByVersion(\n appEntryPoint: Address,\n version: number,\n blockNumber?: bigint,\n ): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"getVaultKeepersByVersion\",\n args: [appEntryPoint, version],\n blockNumber,\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getCurrentVaultKeepers(\n appEntryPoint: Address,\n ): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"getCurrentVaultKeepers\",\n args: [appEntryPoint],\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getCurrentVaultKeepersVersion(\n appEntryPoint: Address,\n blockNumber?: bigint,\n ): Promise<number> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"getCurrentVaultKeepersVersion\",\n args: [appEntryPoint],\n blockNumber,\n })) as number;\n\n return result;\n }\n\n async getCurrentAppKeeperKeyEpoch(\n appEntryPoint: Address,\n blockNumber?: bigint,\n ): Promise<bigint> {\n const raw: unknown = await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"appKeeperKeyEpochCurrent\",\n args: [appEntryPoint],\n blockNumber,\n });\n\n return assertKeyEpoch(raw, \"appKeeperKeyEpochCurrent\");\n }\n}\n\n/**\n * Reads universal challengers from the ProtocolParams contract.\n *\n * Usage:\n * ```ts\n * const reader = new ViemUniversalChallengerReader(publicClient, protocolParamsAddress);\n * const challengers = await reader.getCurrentUniversalChallengers();\n * ```\n */\nexport class ViemUniversalChallengerReader implements UniversalChallengerReader {\n constructor(\n private publicClient: PublicClient,\n private contractAddress: Address,\n ) {}\n\n async getUniversalChallengersByVersion(\n version: number,\n blockNumber?: bigint,\n ): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"getUniversalChallengersByVersion\",\n args: [version],\n blockNumber,\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getCurrentUniversalChallengers(): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"getCurrentUniversalChallengers\",\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getLatestUniversalChallengersVersion(\n blockNumber?: bigint,\n ): Promise<number> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"latestUniversalChallengersVersion\",\n blockNumber,\n })) as number;\n\n return result;\n }\n\n async getCurrentUcKeyEpoch(blockNumber?: bigint): Promise<bigint> {\n const raw: unknown = await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"ucKeyEpochCurrent\",\n blockNumber,\n });\n\n return assertKeyEpoch(raw, \"ucKeyEpochCurrent\");\n }\n}\n"],"names":["resolveProtocolAddresses","publicClient","btcVaultRegistryAddress","protocolParams","applicationRegistry","BTCVaultRegistryABI","assertMulticallLength","actual","expected","label","partition","results","keeperCount","ViemOperationKeyReader","contracts","calls","challengerCount","blockNumber","query","keeper","ApplicationRegistryABI","challenger","ProtocolParamsABI","epochs","mapKeyPairs","result","pair","assertKeyEpoch","raw","ViemVaultKeeperReader","contractAddress","appEntryPoint","version","ViemUniversalChallengerReader"],"mappings":"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"}
1
+ {"version":3,"file":"signer-set-reader-CJfV-GDz.cjs","sources":["../src/tbv/core/clients/eth/contract-address-resolver.ts","../src/tbv/core/clients/eth/operation-key-reader.ts","../src/tbv/core/clients/eth/signer-set-reader.ts"],"sourcesContent":["/**\n * Contract Address Resolver\n *\n * Resolves ProtocolParams and ApplicationRegistry contract addresses\n * from the BTCVaultRegistry contract. These addresses are needed to\n * construct the SDK's contract readers.\n *\n * @module clients/eth/contract-address-resolver\n */\n\nimport type { Address, PublicClient } from \"viem\";\n\nimport { BTCVaultRegistryABI } from \"../../contracts/abis/BTCVaultRegistry.abi\";\n\nexport interface ProtocolAddresses {\n /** Address of the ProtocolParams contract */\n protocolParams: Address;\n /** Address of the ApplicationRegistry contract */\n applicationRegistry: Address;\n}\n\n/**\n * Resolve ProtocolParams and ApplicationRegistry addresses from BTCVaultRegistry.\n *\n * Uses a single multicall for atomicity and efficiency.\n *\n * @param publicClient - viem PublicClient instance\n * @param btcVaultRegistryAddress - Address of the BTCVaultRegistry contract\n * @returns Resolved contract addresses\n */\nexport async function resolveProtocolAddresses(\n publicClient: PublicClient,\n btcVaultRegistryAddress: Address,\n): Promise<ProtocolAddresses> {\n const [protocolParams, applicationRegistry] = await publicClient.multicall({\n contracts: [\n {\n address: btcVaultRegistryAddress,\n abi: BTCVaultRegistryABI,\n functionName: \"protocolParams\",\n },\n {\n address: btcVaultRegistryAddress,\n abi: BTCVaultRegistryABI,\n functionName: \"applicationRegistry\",\n },\n ],\n allowFailure: false,\n });\n\n return {\n protocolParams: protocolParams as Address,\n applicationRegistry: applicationRegistry as Address,\n };\n}\n","/**\n * Concrete RFC-006 operation-key reader spanning all three registries.\n *\n * This is an optional utility — callers can use their own implementation of\n * the {@link OperationKeyReader} interface.\n */\n\nimport type { Abi, Address, Hex, PublicClient } from \"viem\";\n\nimport { ApplicationRegistryABI } from \"../../contracts/abis/ApplicationRegistry.abi\";\nimport { BTCVaultRegistryABI } from \"../../contracts/abis/BTCVaultRegistry.abi\";\nimport { ProtocolParamsABI } from \"../../contracts/abis/ProtocolParams.abi\";\nimport type {\n KeyEpochs,\n OperationKeyQuery,\n OperationKeyReader,\n RawOperationKeys,\n RawPayoutScripts,\n} from \"./types\";\n\n/** Addresses of the three registries an operation-key resolution spans. */\nexport interface OperationKeyContracts {\n btcVaultRegistry: Address;\n applicationRegistry: Address;\n protocolParams: Address;\n}\n\n/** One `multicall` entry. Loosely typed because the three ABIs differ. */\ntype Call = {\n address: Address;\n abi: Abi;\n functionName: string;\n args: readonly unknown[];\n};\n\n/**\n * Reject a multicall result that is not one-per-call.\n *\n * Every method here relies on positional alignment between calls and results,\n * so a short array does not fail — it silently hands back `undefined` for the\n * tail entries. Downstream that surfaces as a complaint about whichever\n * operator happens to occupy the missing slot, blaming a participant that is\n * perfectly fine for a read that came back incomplete. Assert the length where\n * the array arrives so the error names the real fault.\n */\nfunction assertMulticallLength(\n actual: number,\n expected: number,\n label: string,\n): void {\n if (actual !== expected) {\n throw new Error(\n `${label}: multicall returned ${actual} results for ${expected} calls, ` +\n `so the results are not roster-aligned; refusing to use them`,\n );\n }\n}\n\n/**\n * Split a flat multicall result into VP / keepers / challengers.\n *\n * Every method below builds its calls in the same order — vault provider\n * first, then keepers in roster order, then challengers in roster order — so\n * the results stay index-aligned with `query.vaultKeepers` /\n * `query.universalChallengers`. That alignment is what lets the resolver pair\n * a resolved key back to its admin address; the sorted key arrays it exposes\n * are derived from those pairs, never the other way round.\n */\nfunction partition<T>(\n results: readonly T[],\n keeperCount: number,\n): { vaultProvider: T; vaultKeepers: T[]; universalChallengers: T[] } {\n return {\n vaultProvider: results[0],\n vaultKeepers: results.slice(1, 1 + keeperCount),\n universalChallengers: results.slice(1 + keeperCount),\n };\n}\n\n/**\n * Reads RFC-006 operation keys and payout scripts.\n *\n * Usage:\n * ```ts\n * const reader = new ViemOperationKeyReader(publicClient, contracts);\n * // A fresh deposit: the keys current at the block the deposit is built at.\n * const current = await reader.getCurrentOperationKeys(query, blockNumber);\n * // An existing vault (refund, resume, payout, claim): the keys at its\n * // frozen epochs, from `VaultRegistryReader.getVaultKeyEpochs(vaultId)`.\n * const frozen = await reader.getOperationKeysAtEpochs(query, epochs);\n * ```\n */\nexport class ViemOperationKeyReader implements OperationKeyReader {\n constructor(\n private publicClient: PublicClient,\n private contracts: OperationKeyContracts,\n ) {}\n\n /**\n * One multicall, `allowFailure: false`, so every key in the set is read at\n * the same block. A rotation landing between two separate `eth_call`s would\n * otherwise produce a mixed-epoch key set and a lock no counterparty agrees\n * with.\n */\n private async readAll<T>(\n calls: Call[],\n keeperCount: number,\n challengerCount: number,\n label: string,\n blockNumber?: bigint,\n ) {\n const results = (await this.publicClient.multicall({\n contracts: calls,\n allowFailure: false,\n blockNumber,\n })) as readonly T[];\n\n assertMulticallLength(\n results.length,\n 1 + keeperCount + challengerCount,\n label,\n );\n\n return partition(results, keeperCount);\n }\n\n async getCurrentOperationKeys(\n query: OperationKeyQuery,\n blockNumber?: bigint,\n ): Promise<RawOperationKeys> {\n const calls: Call[] = [\n {\n address: this.contracts.btcVaultRegistry,\n abi: BTCVaultRegistryABI as Abi,\n functionName: \"getCurrentOperationBtcKey\",\n args: [query.vaultProviderEthAddress],\n },\n ...query.vaultKeepers.map((keeper) => ({\n address: this.contracts.applicationRegistry,\n abi: ApplicationRegistryABI as Abi,\n functionName: \"getCurrentOperationBtcKey\",\n args: [query.applicationEntryPoint, keeper.ethAddress],\n })),\n ...query.universalChallengers.map((challenger) => ({\n address: this.contracts.protocolParams,\n abi: ProtocolParamsABI as Abi,\n functionName: \"getCurrentOperationBtcKey\",\n args: [challenger.ethAddress],\n })),\n ];\n\n return this.readAll<Hex>(\n calls,\n query.vaultKeepers.length,\n query.universalChallengers.length,\n \"getCurrentOperationKeys\",\n blockNumber,\n );\n }\n\n async getOperationKeysAtEpochs(\n query: OperationKeyQuery,\n epochs: KeyEpochs,\n ): Promise<RawOperationKeys> {\n const calls: Call[] = [\n // The VP takes the plain `AtEpoch` variant: it has no membership\n // version, so its genesis (the registration key at version 0) is\n // unambiguous and the contract resolves it internally.\n {\n address: this.contracts.btcVaultRegistry,\n abi: BTCVaultRegistryABI as Abi,\n functionName: \"getOperationBtcKeyAtEpoch\",\n args: [query.vaultProviderEthAddress, epochs.vpKeyEpoch],\n },\n // Keepers and challengers take `...OrGenesis` with their roster key\n // passed explicitly, because the correct genesis for them is their key\n // in *this vault's frozen membership version*. An operator dropped from\n // the current roster, or listed under a different key in an older\n // version, would otherwise resolve against the wrong genesis.\n ...query.vaultKeepers.map((keeper) => ({\n address: this.contracts.applicationRegistry,\n abi: ApplicationRegistryABI as Abi,\n functionName: \"getOperationBtcKeyAtEpochOrGenesis\",\n args: [\n query.applicationEntryPoint,\n keeper.ethAddress,\n epochs.appKeeperKeyEpoch,\n keeper.btcPubKey,\n ],\n })),\n ...query.universalChallengers.map((challenger) => ({\n address: this.contracts.protocolParams,\n abi: ProtocolParamsABI as Abi,\n functionName: \"getOperationBtcKeyAtEpochOrGenesis\",\n args: [challenger.ethAddress, epochs.ucKeyEpoch, challenger.btcPubKey],\n })),\n ];\n\n return this.readAll<Hex>(\n calls,\n query.vaultKeepers.length,\n query.universalChallengers.length,\n \"getOperationKeysAtEpochs\",\n );\n }\n\n async getPayoutScriptsAtEpochs(\n query: OperationKeyQuery,\n epochs: KeyEpochs,\n ): Promise<RawPayoutScripts> {\n // Universal challengers are never claimers, so they have no payout script\n // and no call here.\n const results = (await this.publicClient.multicall({\n contracts: [\n {\n address: this.contracts.btcVaultRegistry,\n abi: BTCVaultRegistryABI as Abi,\n functionName: \"getPayoutScriptAtEpoch\",\n args: [query.vaultProviderEthAddress, epochs.vpKeyEpoch],\n },\n ...query.vaultKeepers.map((keeper) => ({\n address: this.contracts.applicationRegistry,\n abi: ApplicationRegistryABI as Abi,\n functionName: \"getPayoutScriptAtEpoch\",\n args: [\n query.applicationEntryPoint,\n keeper.ethAddress,\n epochs.appKeeperKeyEpoch,\n ],\n })),\n ],\n allowFailure: false,\n })) as readonly Hex[];\n\n // Expected length is `1 + keepers`, with no challenger term — see the\n // comment above on why universal challengers have no call here.\n assertMulticallLength(\n results.length,\n 1 + query.vaultKeepers.length,\n \"getPayoutScriptsAtEpochs\",\n );\n\n return {\n vaultProvider: results[0],\n vaultKeepers: [...results.slice(1)],\n };\n }\n}\n","/**\n * Concrete signer-set readers for vault keepers and universal challengers.\n *\n * These are optional utilities — callers can use their own implementations\n * of the VaultKeeperReader and UniversalChallengerReader interfaces.\n *\n * The rosters they return carry each member's *registration* key. A member\n * can rotate its RFC-006 operation key without changing the roster, so a\n * vault registered after a member had rotated commits to a key the roster\n * does not list. Resolve operation keys with `ViemOperationKeyReader`.\n */\n\nimport type { Address, Hex, PublicClient } from \"viem\";\n\nimport { ApplicationRegistryABI } from \"../../contracts/abis/ApplicationRegistry.abi\";\nimport { ProtocolParamsABI } from \"../../contracts/abis/ProtocolParams.abi\";\nimport type {\n AddressBTCKeyPair,\n UniversalChallengerReader,\n VaultKeeperReader,\n} from \"./types\";\n\n/** Map viem tuple array to AddressBTCKeyPair[]. */\nfunction mapKeyPairs(\n result: readonly { ethAddress: Address; btcPubKey: Hex }[],\n): AddressBTCKeyPair[] {\n return result.map((pair) => ({\n ethAddress: pair.ethAddress,\n btcPubKey: pair.btcPubKey,\n }));\n}\n\n/**\n * Both key-epoch getters return `uint64` and feed the peg-in config\n * fingerprint, where the contract encodes them as `uint64`. A `Number`\n * narrowing would silently truncate above 2^53 and produce a fingerprint the\n * registry cannot reproduce, so the payload is asserted to be a `bigint` and\n * carried as one — never coerced, never defaulted.\n */\nfunction assertKeyEpoch(raw: unknown, label: string): bigint {\n if (typeof raw !== \"bigint\") {\n throw new Error(\n `Invalid ${label} from contract: must be a bigint, got ${typeof raw}`,\n );\n }\n return raw;\n}\n\n/**\n * Reads vault keepers from the ApplicationRegistry contract.\n *\n * Usage:\n * ```ts\n * const reader = new ViemVaultKeeperReader(publicClient, applicationRegistryAddress);\n * const keepers = await reader.getCurrentVaultKeepers(appEntryPoint);\n * ```\n */\nexport class ViemVaultKeeperReader implements VaultKeeperReader {\n constructor(\n private publicClient: PublicClient,\n private contractAddress: Address,\n ) {}\n\n async getVaultKeepersByVersion(\n appEntryPoint: Address,\n version: number,\n blockNumber?: bigint,\n ): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"getVaultKeepersByVersion\",\n args: [appEntryPoint, version],\n blockNumber,\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getCurrentVaultKeepers(\n appEntryPoint: Address,\n ): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"getCurrentVaultKeepers\",\n args: [appEntryPoint],\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getCurrentVaultKeepersVersion(\n appEntryPoint: Address,\n blockNumber?: bigint,\n ): Promise<number> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"getCurrentVaultKeepersVersion\",\n args: [appEntryPoint],\n blockNumber,\n })) as number;\n\n return result;\n }\n\n async getCurrentAppKeeperKeyEpoch(\n appEntryPoint: Address,\n blockNumber?: bigint,\n ): Promise<bigint> {\n const raw: unknown = await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"appKeeperKeyEpochCurrent\",\n args: [appEntryPoint],\n blockNumber,\n });\n\n return assertKeyEpoch(raw, \"appKeeperKeyEpochCurrent\");\n }\n}\n\n/**\n * Reads universal challengers from the ProtocolParams contract.\n *\n * Usage:\n * ```ts\n * const reader = new ViemUniversalChallengerReader(publicClient, protocolParamsAddress);\n * const challengers = await reader.getCurrentUniversalChallengers();\n * ```\n */\nexport class ViemUniversalChallengerReader implements UniversalChallengerReader {\n constructor(\n private publicClient: PublicClient,\n private contractAddress: Address,\n ) {}\n\n async getUniversalChallengersByVersion(\n version: number,\n blockNumber?: bigint,\n ): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"getUniversalChallengersByVersion\",\n args: [version],\n blockNumber,\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getCurrentUniversalChallengers(): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"getCurrentUniversalChallengers\",\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getLatestUniversalChallengersVersion(\n blockNumber?: bigint,\n ): Promise<number> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"latestUniversalChallengersVersion\",\n blockNumber,\n })) as number;\n\n return result;\n }\n\n async getCurrentUcKeyEpoch(blockNumber?: bigint): Promise<bigint> {\n const raw: unknown = await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"ucKeyEpochCurrent\",\n blockNumber,\n });\n\n return assertKeyEpoch(raw, \"ucKeyEpochCurrent\");\n }\n}\n"],"names":["resolveProtocolAddresses","publicClient","btcVaultRegistryAddress","protocolParams","applicationRegistry","BTCVaultRegistryABI","assertMulticallLength","actual","expected","label","partition","results","keeperCount","ViemOperationKeyReader","contracts","calls","challengerCount","blockNumber","query","keeper","ApplicationRegistryABI","challenger","ProtocolParamsABI","epochs","mapKeyPairs","result","pair","assertKeyEpoch","raw","ViemVaultKeeperReader","contractAddress","appEntryPoint","version","ViemUniversalChallengerReader"],"mappings":"uKA8BA,eAAsBA,EACpBC,EACAC,EAC4B,CAC5B,KAAM,CAACC,EAAgBC,CAAmB,EAAI,MAAMH,EAAa,UAAU,CACzE,UAAW,CACT,CACE,QAASC,EACT,IAAKG,EAAAA,oBACL,aAAc,gBAAA,EAEhB,CACE,QAASH,EACT,IAAKG,EAAAA,oBACL,aAAc,qBAAA,CAChB,EAEF,aAAc,EAAA,CACf,EAED,MAAO,CACL,eAAAF,EACA,oBAAAC,CAAA,CAEJ,CCTA,SAASE,EACPC,EACAC,EACAC,EACM,CACN,GAAIF,IAAWC,EACb,MAAM,IAAI,MACR,GAAGC,CAAK,wBAAwBF,CAAM,gBAAgBC,CAAQ,qEAAA,CAIpE,CAYA,SAASE,EACPC,EACAC,EACoE,CACpE,MAAO,CACL,cAAeD,EAAQ,CAAC,EACxB,aAAcA,EAAQ,MAAM,EAAG,EAAIC,CAAW,EAC9C,qBAAsBD,EAAQ,MAAM,EAAIC,CAAW,CAAA,CAEvD,CAeO,MAAMC,CAAqD,CAChE,YACUZ,EACAa,EACR,CAFQ,KAAA,aAAAb,EACA,KAAA,UAAAa,CACP,CAQH,MAAc,QACZC,EACAH,EACAI,EACAP,EACAQ,EACA,CACA,MAAMN,EAAW,MAAM,KAAK,aAAa,UAAU,CACjD,UAAWI,EACX,aAAc,GACd,YAAAE,CAAA,CACD,EAED,OAAAX,EACEK,EAAQ,OACR,EAAIC,EAAcI,EAClBP,CAAA,EAGKC,EAAUC,EAASC,CAAW,CACvC,CAEA,MAAM,wBACJM,EACAD,EAC2B,CAC3B,MAAMF,EAAgB,CACpB,CACE,QAAS,KAAK,UAAU,iBACxB,IAAKV,EAAAA,oBACL,aAAc,4BACd,KAAM,CAACa,EAAM,uBAAuB,CAAA,EAEtC,GAAGA,EAAM,aAAa,IAAKC,IAAY,CACrC,QAAS,KAAK,UAAU,oBACxB,IAAKC,EAAAA,uBACL,aAAc,4BACd,KAAM,CAACF,EAAM,sBAAuBC,EAAO,UAAU,CAAA,EACrD,EACF,GAAGD,EAAM,qBAAqB,IAAKG,IAAgB,CACjD,QAAS,KAAK,UAAU,eACxB,IAAKC,EAAAA,kBACL,aAAc,4BACd,KAAM,CAACD,EAAW,UAAU,CAAA,EAC5B,CAAA,EAGJ,OAAO,KAAK,QACVN,EACAG,EAAM,aAAa,OACnBA,EAAM,qBAAqB,OAC3B,0BACAD,CAAA,CAEJ,CAEA,MAAM,yBACJC,EACAK,EAC2B,CAC3B,MAAMR,EAAgB,CAIpB,CACE,QAAS,KAAK,UAAU,iBACxB,IAAKV,EAAAA,oBACL,aAAc,4BACd,KAAM,CAACa,EAAM,wBAAyBK,EAAO,UAAU,CAAA,EAOzD,GAAGL,EAAM,aAAa,IAAKC,IAAY,CACrC,QAAS,KAAK,UAAU,oBACxB,IAAKC,EAAAA,uBACL,aAAc,qCACd,KAAM,CACJF,EAAM,sBACNC,EAAO,WACPI,EAAO,kBACPJ,EAAO,SAAA,CACT,EACA,EACF,GAAGD,EAAM,qBAAqB,IAAKG,IAAgB,CACjD,QAAS,KAAK,UAAU,eACxB,IAAKC,EAAAA,kBACL,aAAc,qCACd,KAAM,CAACD,EAAW,WAAYE,EAAO,WAAYF,EAAW,SAAS,CAAA,EACrE,CAAA,EAGJ,OAAO,KAAK,QACVN,EACAG,EAAM,aAAa,OACnBA,EAAM,qBAAqB,OAC3B,0BAAA,CAEJ,CAEA,MAAM,yBACJA,EACAK,EAC2B,CAG3B,MAAMZ,EAAW,MAAM,KAAK,aAAa,UAAU,CACjD,UAAW,CACT,CACE,QAAS,KAAK,UAAU,iBACxB,IAAKN,EAAAA,oBACL,aAAc,yBACd,KAAM,CAACa,EAAM,wBAAyBK,EAAO,UAAU,CAAA,EAEzD,GAAGL,EAAM,aAAa,IAAKC,IAAY,CACrC,QAAS,KAAK,UAAU,oBACxB,IAAKC,EAAAA,uBACL,aAAc,yBACd,KAAM,CACJF,EAAM,sBACNC,EAAO,WACPI,EAAO,iBAAA,CACT,EACA,CAAA,EAEJ,aAAc,EAAA,CACf,EAID,OAAAjB,EACEK,EAAQ,OACR,EAAIO,EAAM,aAAa,OACvB,0BAAA,EAGK,CACL,cAAeP,EAAQ,CAAC,EACxB,aAAc,CAAC,GAAGA,EAAQ,MAAM,CAAC,CAAC,CAAA,CAEtC,CACF,CChOA,SAASa,EACPC,EACqB,CACrB,OAAOA,EAAO,IAAKC,IAAU,CAC3B,WAAYA,EAAK,WACjB,UAAWA,EAAK,SAAA,EAChB,CACJ,CASA,SAASC,EAAeC,EAAcnB,EAAuB,CAC3D,GAAI,OAAOmB,GAAQ,SACjB,MAAM,IAAI,MACR,WAAWnB,CAAK,yCAAyC,OAAOmB,CAAG,EAAA,EAGvE,OAAOA,CACT,CAWO,MAAMC,CAAmD,CAC9D,YACU5B,EACA6B,EACR,CAFQ,KAAA,aAAA7B,EACA,KAAA,gBAAA6B,CACP,CAEH,MAAM,yBACJC,EACAC,EACAf,EAC8B,CAC9B,MAAMQ,EAAU,MAAM,KAAK,aAAa,aAAa,CACnD,QAAS,KAAK,gBACd,IAAKL,EAAAA,uBACL,aAAc,2BACd,KAAM,CAACW,EAAeC,CAAO,EAC7B,YAAAf,CAAA,CACD,EAED,OAAOO,EAAYC,CAAM,CAC3B,CAEA,MAAM,uBACJM,EAC8B,CAC9B,MAAMN,EAAU,MAAM,KAAK,aAAa,aAAa,CACnD,QAAS,KAAK,gBACd,IAAKL,EAAAA,uBACL,aAAc,yBACd,KAAM,CAACW,CAAa,CAAA,CACrB,EAED,OAAOP,EAAYC,CAAM,CAC3B,CAEA,MAAM,8BACJM,EACAd,EACiB,CASjB,OARgB,MAAM,KAAK,aAAa,aAAa,CACnD,QAAS,KAAK,gBACd,IAAKG,EAAAA,uBACL,aAAc,gCACd,KAAM,CAACW,CAAa,EACpB,YAAAd,CAAA,CACD,CAGH,CAEA,MAAM,4BACJc,EACAd,EACiB,CACjB,MAAMW,EAAe,MAAM,KAAK,aAAa,aAAa,CACxD,QAAS,KAAK,gBACd,IAAKR,EAAAA,uBACL,aAAc,2BACd,KAAM,CAACW,CAAa,EACpB,YAAAd,CAAA,CACD,EAED,OAAOU,EAAeC,EAAK,0BAA0B,CACvD,CACF,CAWO,MAAMK,CAAmE,CAC9E,YACUhC,EACA6B,EACR,CAFQ,KAAA,aAAA7B,EACA,KAAA,gBAAA6B,CACP,CAEH,MAAM,iCACJE,EACAf,EAC8B,CAC9B,MAAMQ,EAAU,MAAM,KAAK,aAAa,aAAa,CACnD,QAAS,KAAK,gBACd,IAAKH,EAAAA,kBACL,aAAc,mCACd,KAAM,CAACU,CAAO,EACd,YAAAf,CAAA,CACD,EAED,OAAOO,EAAYC,CAAM,CAC3B,CAEA,MAAM,gCAA+D,CACnE,MAAMA,EAAU,MAAM,KAAK,aAAa,aAAa,CACnD,QAAS,KAAK,gBACd,IAAKH,EAAAA,kBACL,aAAc,gCAAA,CACf,EAED,OAAOE,EAAYC,CAAM,CAC3B,CAEA,MAAM,qCACJR,EACiB,CAQjB,OAPgB,MAAM,KAAK,aAAa,aAAa,CACnD,QAAS,KAAK,gBACd,IAAKK,EAAAA,kBACL,aAAc,oCACd,YAAAL,CAAA,CACD,CAGH,CAEA,MAAM,qBAAqBA,EAAuC,CAChE,MAAMW,EAAe,MAAM,KAAK,aAAa,aAAa,CACxD,QAAS,KAAK,gBACd,IAAKN,EAAAA,kBACL,aAAc,oBACd,YAAAL,CAAA,CACD,EAED,OAAOU,EAAeC,EAAK,mBAAmB,CAChD,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"signer-set-reader-DiwLeqik.js","sources":["../src/tbv/core/clients/eth/contract-address-resolver.ts","../src/tbv/core/clients/eth/operation-key-reader.ts","../src/tbv/core/clients/eth/signer-set-reader.ts"],"sourcesContent":["/**\n * Contract Address Resolver\n *\n * Resolves ProtocolParams and ApplicationRegistry contract addresses\n * from the BTCVaultRegistry contract. These addresses are needed to\n * construct the SDK's contract readers.\n *\n * @module clients/eth/contract-address-resolver\n */\n\nimport type { Address, PublicClient } from \"viem\";\n\nimport { BTCVaultRegistryABI } from \"../../contracts/abis/BTCVaultRegistry.abi\";\n\nexport interface ProtocolAddresses {\n /** Address of the ProtocolParams contract */\n protocolParams: Address;\n /** Address of the ApplicationRegistry contract */\n applicationRegistry: Address;\n}\n\n/**\n * Resolve ProtocolParams and ApplicationRegistry addresses from BTCVaultRegistry.\n *\n * Uses a single multicall for atomicity and efficiency.\n *\n * @param publicClient - viem PublicClient instance\n * @param btcVaultRegistryAddress - Address of the BTCVaultRegistry contract\n * @returns Resolved contract addresses\n */\nexport async function resolveProtocolAddresses(\n publicClient: PublicClient,\n btcVaultRegistryAddress: Address,\n): Promise<ProtocolAddresses> {\n const [protocolParams, applicationRegistry] = await publicClient.multicall({\n contracts: [\n {\n address: btcVaultRegistryAddress,\n abi: BTCVaultRegistryABI,\n functionName: \"protocolParams\",\n },\n {\n address: btcVaultRegistryAddress,\n abi: BTCVaultRegistryABI,\n functionName: \"applicationRegistry\",\n },\n ],\n allowFailure: false,\n });\n\n return {\n protocolParams: protocolParams as Address,\n applicationRegistry: applicationRegistry as Address,\n };\n}\n","/**\n * Concrete RFC-006 operation-key reader spanning all three registries.\n *\n * This is an optional utility — callers can use their own implementation of\n * the {@link OperationKeyReader} interface.\n */\n\nimport type { Abi, Address, Hex, PublicClient } from \"viem\";\n\nimport { ApplicationRegistryABI } from \"../../contracts/abis/ApplicationRegistry.abi\";\nimport { BTCVaultRegistryABI } from \"../../contracts/abis/BTCVaultRegistry.abi\";\nimport { ProtocolParamsABI } from \"../../contracts/abis/ProtocolParams.abi\";\nimport type {\n KeyEpochs,\n OperationKeyQuery,\n OperationKeyReader,\n RawOperationKeys,\n RawPayoutScripts,\n} from \"./types\";\n\n/** Addresses of the three registries an operation-key resolution spans. */\nexport interface OperationKeyContracts {\n btcVaultRegistry: Address;\n applicationRegistry: Address;\n protocolParams: Address;\n}\n\n/** One `multicall` entry. Loosely typed because the three ABIs differ. */\ntype Call = {\n address: Address;\n abi: Abi;\n functionName: string;\n args: readonly unknown[];\n};\n\n/**\n * Reject a multicall result that is not one-per-call.\n *\n * Every method here relies on positional alignment between calls and results,\n * so a short array does not fail — it silently hands back `undefined` for the\n * tail entries. Downstream that surfaces as a complaint about whichever\n * operator happens to occupy the missing slot, blaming a participant that is\n * perfectly fine for a read that came back incomplete. Assert the length where\n * the array arrives so the error names the real fault.\n */\nfunction assertMulticallLength(\n actual: number,\n expected: number,\n label: string,\n): void {\n if (actual !== expected) {\n throw new Error(\n `${label}: multicall returned ${actual} results for ${expected} calls, ` +\n `so the results are not roster-aligned; refusing to use them`,\n );\n }\n}\n\n/**\n * Split a flat multicall result into VP / keepers / challengers.\n *\n * Every method below builds its calls in the same order — vault provider\n * first, then keepers in roster order, then challengers in roster order — so\n * the results stay index-aligned with `query.vaultKeepers` /\n * `query.universalChallengers`. That alignment is what lets the resolver pair\n * a resolved key back to its admin address; the sorted key arrays it exposes\n * are derived from those pairs, never the other way round.\n */\nfunction partition<T>(\n results: readonly T[],\n keeperCount: number,\n): { vaultProvider: T; vaultKeepers: T[]; universalChallengers: T[] } {\n return {\n vaultProvider: results[0],\n vaultKeepers: results.slice(1, 1 + keeperCount),\n universalChallengers: results.slice(1 + keeperCount),\n };\n}\n\n/**\n * Reads RFC-006 operation keys and payout scripts.\n *\n * Usage:\n * ```ts\n * const reader = new ViemOperationKeyReader(publicClient, contracts);\n * const keys = await reader.getCurrentOperationKeys(query);\n * ```\n */\nexport class ViemOperationKeyReader implements OperationKeyReader {\n constructor(\n private publicClient: PublicClient,\n private contracts: OperationKeyContracts,\n ) {}\n\n /**\n * One multicall, `allowFailure: false`, so every key in the set is read at\n * the same block. A rotation landing between two separate `eth_call`s would\n * otherwise produce a mixed-epoch key set and a lock no counterparty agrees\n * with.\n */\n private async readAll<T>(\n calls: Call[],\n keeperCount: number,\n challengerCount: number,\n label: string,\n blockNumber?: bigint,\n ) {\n const results = (await this.publicClient.multicall({\n contracts: calls,\n allowFailure: false,\n blockNumber,\n })) as readonly T[];\n\n assertMulticallLength(\n results.length,\n 1 + keeperCount + challengerCount,\n label,\n );\n\n return partition(results, keeperCount);\n }\n\n async getCurrentOperationKeys(\n query: OperationKeyQuery,\n blockNumber?: bigint,\n ): Promise<RawOperationKeys> {\n const calls: Call[] = [\n {\n address: this.contracts.btcVaultRegistry,\n abi: BTCVaultRegistryABI as Abi,\n functionName: \"getCurrentOperationBtcKey\",\n args: [query.vaultProviderEthAddress],\n },\n ...query.vaultKeepers.map((keeper) => ({\n address: this.contracts.applicationRegistry,\n abi: ApplicationRegistryABI as Abi,\n functionName: \"getCurrentOperationBtcKey\",\n args: [query.applicationEntryPoint, keeper.ethAddress],\n })),\n ...query.universalChallengers.map((challenger) => ({\n address: this.contracts.protocolParams,\n abi: ProtocolParamsABI as Abi,\n functionName: \"getCurrentOperationBtcKey\",\n args: [challenger.ethAddress],\n })),\n ];\n\n return this.readAll<Hex>(\n calls,\n query.vaultKeepers.length,\n query.universalChallengers.length,\n \"getCurrentOperationKeys\",\n blockNumber,\n );\n }\n\n async getOperationKeysAtEpochs(\n query: OperationKeyQuery,\n epochs: KeyEpochs,\n ): Promise<RawOperationKeys> {\n const calls: Call[] = [\n // The VP takes the plain `AtEpoch` variant: it has no membership\n // version, so its genesis (the registration key at version 0) is\n // unambiguous and the contract resolves it internally.\n {\n address: this.contracts.btcVaultRegistry,\n abi: BTCVaultRegistryABI as Abi,\n functionName: \"getOperationBtcKeyAtEpoch\",\n args: [query.vaultProviderEthAddress, epochs.vpKeyEpoch],\n },\n // Keepers and challengers take `...OrGenesis` with their roster key\n // passed explicitly, because the correct genesis for them is their key\n // in *this vault's frozen membership version*. An operator dropped from\n // the current roster, or listed under a different key in an older\n // version, would otherwise resolve against the wrong genesis.\n ...query.vaultKeepers.map((keeper) => ({\n address: this.contracts.applicationRegistry,\n abi: ApplicationRegistryABI as Abi,\n functionName: \"getOperationBtcKeyAtEpochOrGenesis\",\n args: [\n query.applicationEntryPoint,\n keeper.ethAddress,\n epochs.appKeeperKeyEpoch,\n keeper.btcPubKey,\n ],\n })),\n ...query.universalChallengers.map((challenger) => ({\n address: this.contracts.protocolParams,\n abi: ProtocolParamsABI as Abi,\n functionName: \"getOperationBtcKeyAtEpochOrGenesis\",\n args: [challenger.ethAddress, epochs.ucKeyEpoch, challenger.btcPubKey],\n })),\n ];\n\n return this.readAll<Hex>(\n calls,\n query.vaultKeepers.length,\n query.universalChallengers.length,\n \"getOperationKeysAtEpochs\",\n );\n }\n\n async getPayoutScriptsAtEpochs(\n query: OperationKeyQuery,\n epochs: KeyEpochs,\n ): Promise<RawPayoutScripts> {\n // Universal challengers are never claimers, so they have no payout script\n // and no call here.\n const results = (await this.publicClient.multicall({\n contracts: [\n {\n address: this.contracts.btcVaultRegistry,\n abi: BTCVaultRegistryABI as Abi,\n functionName: \"getPayoutScriptAtEpoch\",\n args: [query.vaultProviderEthAddress, epochs.vpKeyEpoch],\n },\n ...query.vaultKeepers.map((keeper) => ({\n address: this.contracts.applicationRegistry,\n abi: ApplicationRegistryABI as Abi,\n functionName: \"getPayoutScriptAtEpoch\",\n args: [\n query.applicationEntryPoint,\n keeper.ethAddress,\n epochs.appKeeperKeyEpoch,\n ],\n })),\n ],\n allowFailure: false,\n })) as readonly Hex[];\n\n // Expected length is `1 + keepers`, with no challenger term — see the\n // comment above on why universal challengers have no call here.\n assertMulticallLength(\n results.length,\n 1 + query.vaultKeepers.length,\n \"getPayoutScriptsAtEpochs\",\n );\n\n return {\n vaultProvider: results[0],\n vaultKeepers: [...results.slice(1)],\n };\n }\n}\n","/**\n * Concrete signer-set readers for vault keepers and universal challengers.\n *\n * These are optional utilities — callers can use their own implementations\n * of the VaultKeeperReader and UniversalChallengerReader interfaces.\n */\n\nimport type { Address, Hex, PublicClient } from \"viem\";\n\nimport { ApplicationRegistryABI } from \"../../contracts/abis/ApplicationRegistry.abi\";\nimport { ProtocolParamsABI } from \"../../contracts/abis/ProtocolParams.abi\";\nimport type {\n AddressBTCKeyPair,\n UniversalChallengerReader,\n VaultKeeperReader,\n} from \"./types\";\n\n/** Map viem tuple array to AddressBTCKeyPair[]. */\nfunction mapKeyPairs(\n result: readonly { ethAddress: Address; btcPubKey: Hex }[],\n): AddressBTCKeyPair[] {\n return result.map((pair) => ({\n ethAddress: pair.ethAddress,\n btcPubKey: pair.btcPubKey,\n }));\n}\n\n/**\n * Both key-epoch getters return `uint64` and feed the peg-in config\n * fingerprint, where the contract encodes them as `uint64`. A `Number`\n * narrowing would silently truncate above 2^53 and produce a fingerprint the\n * registry cannot reproduce, so the payload is asserted to be a `bigint` and\n * carried as one — never coerced, never defaulted.\n */\nfunction assertKeyEpoch(raw: unknown, label: string): bigint {\n if (typeof raw !== \"bigint\") {\n throw new Error(\n `Invalid ${label} from contract: must be a bigint, got ${typeof raw}`,\n );\n }\n return raw;\n}\n\n/**\n * Reads vault keepers from the ApplicationRegistry contract.\n *\n * Usage:\n * ```ts\n * const reader = new ViemVaultKeeperReader(publicClient, applicationRegistryAddress);\n * const keepers = await reader.getCurrentVaultKeepers(appEntryPoint);\n * ```\n */\nexport class ViemVaultKeeperReader implements VaultKeeperReader {\n constructor(\n private publicClient: PublicClient,\n private contractAddress: Address,\n ) {}\n\n async getVaultKeepersByVersion(\n appEntryPoint: Address,\n version: number,\n blockNumber?: bigint,\n ): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"getVaultKeepersByVersion\",\n args: [appEntryPoint, version],\n blockNumber,\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getCurrentVaultKeepers(\n appEntryPoint: Address,\n ): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"getCurrentVaultKeepers\",\n args: [appEntryPoint],\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getCurrentVaultKeepersVersion(\n appEntryPoint: Address,\n blockNumber?: bigint,\n ): Promise<number> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"getCurrentVaultKeepersVersion\",\n args: [appEntryPoint],\n blockNumber,\n })) as number;\n\n return result;\n }\n\n async getCurrentAppKeeperKeyEpoch(\n appEntryPoint: Address,\n blockNumber?: bigint,\n ): Promise<bigint> {\n const raw: unknown = await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"appKeeperKeyEpochCurrent\",\n args: [appEntryPoint],\n blockNumber,\n });\n\n return assertKeyEpoch(raw, \"appKeeperKeyEpochCurrent\");\n }\n}\n\n/**\n * Reads universal challengers from the ProtocolParams contract.\n *\n * Usage:\n * ```ts\n * const reader = new ViemUniversalChallengerReader(publicClient, protocolParamsAddress);\n * const challengers = await reader.getCurrentUniversalChallengers();\n * ```\n */\nexport class ViemUniversalChallengerReader implements UniversalChallengerReader {\n constructor(\n private publicClient: PublicClient,\n private contractAddress: Address,\n ) {}\n\n async getUniversalChallengersByVersion(\n version: number,\n blockNumber?: bigint,\n ): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"getUniversalChallengersByVersion\",\n args: [version],\n blockNumber,\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getCurrentUniversalChallengers(): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"getCurrentUniversalChallengers\",\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getLatestUniversalChallengersVersion(\n blockNumber?: bigint,\n ): Promise<number> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"latestUniversalChallengersVersion\",\n blockNumber,\n })) as number;\n\n return result;\n }\n\n async getCurrentUcKeyEpoch(blockNumber?: bigint): Promise<bigint> {\n const raw: unknown = await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"ucKeyEpochCurrent\",\n blockNumber,\n });\n\n return assertKeyEpoch(raw, \"ucKeyEpochCurrent\");\n }\n}\n"],"names":["resolveProtocolAddresses","publicClient","btcVaultRegistryAddress","protocolParams","applicationRegistry","BTCVaultRegistryABI","assertMulticallLength","actual","expected","label","partition","results","keeperCount","ViemOperationKeyReader","contracts","calls","challengerCount","blockNumber","query","keeper","ApplicationRegistryABI","challenger","ProtocolParamsABI","epochs","mapKeyPairs","result","pair","assertKeyEpoch","raw","ViemVaultKeeperReader","contractAddress","appEntryPoint","version","ViemUniversalChallengerReader"],"mappings":"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"}
1
+ {"version":3,"file":"signer-set-reader-DiwLeqik.js","sources":["../src/tbv/core/clients/eth/contract-address-resolver.ts","../src/tbv/core/clients/eth/operation-key-reader.ts","../src/tbv/core/clients/eth/signer-set-reader.ts"],"sourcesContent":["/**\n * Contract Address Resolver\n *\n * Resolves ProtocolParams and ApplicationRegistry contract addresses\n * from the BTCVaultRegistry contract. These addresses are needed to\n * construct the SDK's contract readers.\n *\n * @module clients/eth/contract-address-resolver\n */\n\nimport type { Address, PublicClient } from \"viem\";\n\nimport { BTCVaultRegistryABI } from \"../../contracts/abis/BTCVaultRegistry.abi\";\n\nexport interface ProtocolAddresses {\n /** Address of the ProtocolParams contract */\n protocolParams: Address;\n /** Address of the ApplicationRegistry contract */\n applicationRegistry: Address;\n}\n\n/**\n * Resolve ProtocolParams and ApplicationRegistry addresses from BTCVaultRegistry.\n *\n * Uses a single multicall for atomicity and efficiency.\n *\n * @param publicClient - viem PublicClient instance\n * @param btcVaultRegistryAddress - Address of the BTCVaultRegistry contract\n * @returns Resolved contract addresses\n */\nexport async function resolveProtocolAddresses(\n publicClient: PublicClient,\n btcVaultRegistryAddress: Address,\n): Promise<ProtocolAddresses> {\n const [protocolParams, applicationRegistry] = await publicClient.multicall({\n contracts: [\n {\n address: btcVaultRegistryAddress,\n abi: BTCVaultRegistryABI,\n functionName: \"protocolParams\",\n },\n {\n address: btcVaultRegistryAddress,\n abi: BTCVaultRegistryABI,\n functionName: \"applicationRegistry\",\n },\n ],\n allowFailure: false,\n });\n\n return {\n protocolParams: protocolParams as Address,\n applicationRegistry: applicationRegistry as Address,\n };\n}\n","/**\n * Concrete RFC-006 operation-key reader spanning all three registries.\n *\n * This is an optional utility — callers can use their own implementation of\n * the {@link OperationKeyReader} interface.\n */\n\nimport type { Abi, Address, Hex, PublicClient } from \"viem\";\n\nimport { ApplicationRegistryABI } from \"../../contracts/abis/ApplicationRegistry.abi\";\nimport { BTCVaultRegistryABI } from \"../../contracts/abis/BTCVaultRegistry.abi\";\nimport { ProtocolParamsABI } from \"../../contracts/abis/ProtocolParams.abi\";\nimport type {\n KeyEpochs,\n OperationKeyQuery,\n OperationKeyReader,\n RawOperationKeys,\n RawPayoutScripts,\n} from \"./types\";\n\n/** Addresses of the three registries an operation-key resolution spans. */\nexport interface OperationKeyContracts {\n btcVaultRegistry: Address;\n applicationRegistry: Address;\n protocolParams: Address;\n}\n\n/** One `multicall` entry. Loosely typed because the three ABIs differ. */\ntype Call = {\n address: Address;\n abi: Abi;\n functionName: string;\n args: readonly unknown[];\n};\n\n/**\n * Reject a multicall result that is not one-per-call.\n *\n * Every method here relies on positional alignment between calls and results,\n * so a short array does not fail — it silently hands back `undefined` for the\n * tail entries. Downstream that surfaces as a complaint about whichever\n * operator happens to occupy the missing slot, blaming a participant that is\n * perfectly fine for a read that came back incomplete. Assert the length where\n * the array arrives so the error names the real fault.\n */\nfunction assertMulticallLength(\n actual: number,\n expected: number,\n label: string,\n): void {\n if (actual !== expected) {\n throw new Error(\n `${label}: multicall returned ${actual} results for ${expected} calls, ` +\n `so the results are not roster-aligned; refusing to use them`,\n );\n }\n}\n\n/**\n * Split a flat multicall result into VP / keepers / challengers.\n *\n * Every method below builds its calls in the same order — vault provider\n * first, then keepers in roster order, then challengers in roster order — so\n * the results stay index-aligned with `query.vaultKeepers` /\n * `query.universalChallengers`. That alignment is what lets the resolver pair\n * a resolved key back to its admin address; the sorted key arrays it exposes\n * are derived from those pairs, never the other way round.\n */\nfunction partition<T>(\n results: readonly T[],\n keeperCount: number,\n): { vaultProvider: T; vaultKeepers: T[]; universalChallengers: T[] } {\n return {\n vaultProvider: results[0],\n vaultKeepers: results.slice(1, 1 + keeperCount),\n universalChallengers: results.slice(1 + keeperCount),\n };\n}\n\n/**\n * Reads RFC-006 operation keys and payout scripts.\n *\n * Usage:\n * ```ts\n * const reader = new ViemOperationKeyReader(publicClient, contracts);\n * // A fresh deposit: the keys current at the block the deposit is built at.\n * const current = await reader.getCurrentOperationKeys(query, blockNumber);\n * // An existing vault (refund, resume, payout, claim): the keys at its\n * // frozen epochs, from `VaultRegistryReader.getVaultKeyEpochs(vaultId)`.\n * const frozen = await reader.getOperationKeysAtEpochs(query, epochs);\n * ```\n */\nexport class ViemOperationKeyReader implements OperationKeyReader {\n constructor(\n private publicClient: PublicClient,\n private contracts: OperationKeyContracts,\n ) {}\n\n /**\n * One multicall, `allowFailure: false`, so every key in the set is read at\n * the same block. A rotation landing between two separate `eth_call`s would\n * otherwise produce a mixed-epoch key set and a lock no counterparty agrees\n * with.\n */\n private async readAll<T>(\n calls: Call[],\n keeperCount: number,\n challengerCount: number,\n label: string,\n blockNumber?: bigint,\n ) {\n const results = (await this.publicClient.multicall({\n contracts: calls,\n allowFailure: false,\n blockNumber,\n })) as readonly T[];\n\n assertMulticallLength(\n results.length,\n 1 + keeperCount + challengerCount,\n label,\n );\n\n return partition(results, keeperCount);\n }\n\n async getCurrentOperationKeys(\n query: OperationKeyQuery,\n blockNumber?: bigint,\n ): Promise<RawOperationKeys> {\n const calls: Call[] = [\n {\n address: this.contracts.btcVaultRegistry,\n abi: BTCVaultRegistryABI as Abi,\n functionName: \"getCurrentOperationBtcKey\",\n args: [query.vaultProviderEthAddress],\n },\n ...query.vaultKeepers.map((keeper) => ({\n address: this.contracts.applicationRegistry,\n abi: ApplicationRegistryABI as Abi,\n functionName: \"getCurrentOperationBtcKey\",\n args: [query.applicationEntryPoint, keeper.ethAddress],\n })),\n ...query.universalChallengers.map((challenger) => ({\n address: this.contracts.protocolParams,\n abi: ProtocolParamsABI as Abi,\n functionName: \"getCurrentOperationBtcKey\",\n args: [challenger.ethAddress],\n })),\n ];\n\n return this.readAll<Hex>(\n calls,\n query.vaultKeepers.length,\n query.universalChallengers.length,\n \"getCurrentOperationKeys\",\n blockNumber,\n );\n }\n\n async getOperationKeysAtEpochs(\n query: OperationKeyQuery,\n epochs: KeyEpochs,\n ): Promise<RawOperationKeys> {\n const calls: Call[] = [\n // The VP takes the plain `AtEpoch` variant: it has no membership\n // version, so its genesis (the registration key at version 0) is\n // unambiguous and the contract resolves it internally.\n {\n address: this.contracts.btcVaultRegistry,\n abi: BTCVaultRegistryABI as Abi,\n functionName: \"getOperationBtcKeyAtEpoch\",\n args: [query.vaultProviderEthAddress, epochs.vpKeyEpoch],\n },\n // Keepers and challengers take `...OrGenesis` with their roster key\n // passed explicitly, because the correct genesis for them is their key\n // in *this vault's frozen membership version*. An operator dropped from\n // the current roster, or listed under a different key in an older\n // version, would otherwise resolve against the wrong genesis.\n ...query.vaultKeepers.map((keeper) => ({\n address: this.contracts.applicationRegistry,\n abi: ApplicationRegistryABI as Abi,\n functionName: \"getOperationBtcKeyAtEpochOrGenesis\",\n args: [\n query.applicationEntryPoint,\n keeper.ethAddress,\n epochs.appKeeperKeyEpoch,\n keeper.btcPubKey,\n ],\n })),\n ...query.universalChallengers.map((challenger) => ({\n address: this.contracts.protocolParams,\n abi: ProtocolParamsABI as Abi,\n functionName: \"getOperationBtcKeyAtEpochOrGenesis\",\n args: [challenger.ethAddress, epochs.ucKeyEpoch, challenger.btcPubKey],\n })),\n ];\n\n return this.readAll<Hex>(\n calls,\n query.vaultKeepers.length,\n query.universalChallengers.length,\n \"getOperationKeysAtEpochs\",\n );\n }\n\n async getPayoutScriptsAtEpochs(\n query: OperationKeyQuery,\n epochs: KeyEpochs,\n ): Promise<RawPayoutScripts> {\n // Universal challengers are never claimers, so they have no payout script\n // and no call here.\n const results = (await this.publicClient.multicall({\n contracts: [\n {\n address: this.contracts.btcVaultRegistry,\n abi: BTCVaultRegistryABI as Abi,\n functionName: \"getPayoutScriptAtEpoch\",\n args: [query.vaultProviderEthAddress, epochs.vpKeyEpoch],\n },\n ...query.vaultKeepers.map((keeper) => ({\n address: this.contracts.applicationRegistry,\n abi: ApplicationRegistryABI as Abi,\n functionName: \"getPayoutScriptAtEpoch\",\n args: [\n query.applicationEntryPoint,\n keeper.ethAddress,\n epochs.appKeeperKeyEpoch,\n ],\n })),\n ],\n allowFailure: false,\n })) as readonly Hex[];\n\n // Expected length is `1 + keepers`, with no challenger term — see the\n // comment above on why universal challengers have no call here.\n assertMulticallLength(\n results.length,\n 1 + query.vaultKeepers.length,\n \"getPayoutScriptsAtEpochs\",\n );\n\n return {\n vaultProvider: results[0],\n vaultKeepers: [...results.slice(1)],\n };\n }\n}\n","/**\n * Concrete signer-set readers for vault keepers and universal challengers.\n *\n * These are optional utilities — callers can use their own implementations\n * of the VaultKeeperReader and UniversalChallengerReader interfaces.\n *\n * The rosters they return carry each member's *registration* key. A member\n * can rotate its RFC-006 operation key without changing the roster, so a\n * vault registered after a member had rotated commits to a key the roster\n * does not list. Resolve operation keys with `ViemOperationKeyReader`.\n */\n\nimport type { Address, Hex, PublicClient } from \"viem\";\n\nimport { ApplicationRegistryABI } from \"../../contracts/abis/ApplicationRegistry.abi\";\nimport { ProtocolParamsABI } from \"../../contracts/abis/ProtocolParams.abi\";\nimport type {\n AddressBTCKeyPair,\n UniversalChallengerReader,\n VaultKeeperReader,\n} from \"./types\";\n\n/** Map viem tuple array to AddressBTCKeyPair[]. */\nfunction mapKeyPairs(\n result: readonly { ethAddress: Address; btcPubKey: Hex }[],\n): AddressBTCKeyPair[] {\n return result.map((pair) => ({\n ethAddress: pair.ethAddress,\n btcPubKey: pair.btcPubKey,\n }));\n}\n\n/**\n * Both key-epoch getters return `uint64` and feed the peg-in config\n * fingerprint, where the contract encodes them as `uint64`. A `Number`\n * narrowing would silently truncate above 2^53 and produce a fingerprint the\n * registry cannot reproduce, so the payload is asserted to be a `bigint` and\n * carried as one — never coerced, never defaulted.\n */\nfunction assertKeyEpoch(raw: unknown, label: string): bigint {\n if (typeof raw !== \"bigint\") {\n throw new Error(\n `Invalid ${label} from contract: must be a bigint, got ${typeof raw}`,\n );\n }\n return raw;\n}\n\n/**\n * Reads vault keepers from the ApplicationRegistry contract.\n *\n * Usage:\n * ```ts\n * const reader = new ViemVaultKeeperReader(publicClient, applicationRegistryAddress);\n * const keepers = await reader.getCurrentVaultKeepers(appEntryPoint);\n * ```\n */\nexport class ViemVaultKeeperReader implements VaultKeeperReader {\n constructor(\n private publicClient: PublicClient,\n private contractAddress: Address,\n ) {}\n\n async getVaultKeepersByVersion(\n appEntryPoint: Address,\n version: number,\n blockNumber?: bigint,\n ): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"getVaultKeepersByVersion\",\n args: [appEntryPoint, version],\n blockNumber,\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getCurrentVaultKeepers(\n appEntryPoint: Address,\n ): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"getCurrentVaultKeepers\",\n args: [appEntryPoint],\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getCurrentVaultKeepersVersion(\n appEntryPoint: Address,\n blockNumber?: bigint,\n ): Promise<number> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"getCurrentVaultKeepersVersion\",\n args: [appEntryPoint],\n blockNumber,\n })) as number;\n\n return result;\n }\n\n async getCurrentAppKeeperKeyEpoch(\n appEntryPoint: Address,\n blockNumber?: bigint,\n ): Promise<bigint> {\n const raw: unknown = await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ApplicationRegistryABI,\n functionName: \"appKeeperKeyEpochCurrent\",\n args: [appEntryPoint],\n blockNumber,\n });\n\n return assertKeyEpoch(raw, \"appKeeperKeyEpochCurrent\");\n }\n}\n\n/**\n * Reads universal challengers from the ProtocolParams contract.\n *\n * Usage:\n * ```ts\n * const reader = new ViemUniversalChallengerReader(publicClient, protocolParamsAddress);\n * const challengers = await reader.getCurrentUniversalChallengers();\n * ```\n */\nexport class ViemUniversalChallengerReader implements UniversalChallengerReader {\n constructor(\n private publicClient: PublicClient,\n private contractAddress: Address,\n ) {}\n\n async getUniversalChallengersByVersion(\n version: number,\n blockNumber?: bigint,\n ): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"getUniversalChallengersByVersion\",\n args: [version],\n blockNumber,\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getCurrentUniversalChallengers(): Promise<AddressBTCKeyPair[]> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"getCurrentUniversalChallengers\",\n })) as readonly { ethAddress: Address; btcPubKey: Hex }[];\n\n return mapKeyPairs(result);\n }\n\n async getLatestUniversalChallengersVersion(\n blockNumber?: bigint,\n ): Promise<number> {\n const result = (await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"latestUniversalChallengersVersion\",\n blockNumber,\n })) as number;\n\n return result;\n }\n\n async getCurrentUcKeyEpoch(blockNumber?: bigint): Promise<bigint> {\n const raw: unknown = await this.publicClient.readContract({\n address: this.contractAddress,\n abi: ProtocolParamsABI,\n functionName: \"ucKeyEpochCurrent\",\n blockNumber,\n });\n\n return assertKeyEpoch(raw, \"ucKeyEpochCurrent\");\n }\n}\n"],"names":["resolveProtocolAddresses","publicClient","btcVaultRegistryAddress","protocolParams","applicationRegistry","BTCVaultRegistryABI","assertMulticallLength","actual","expected","label","partition","results","keeperCount","ViemOperationKeyReader","contracts","calls","challengerCount","blockNumber","query","keeper","ApplicationRegistryABI","challenger","ProtocolParamsABI","epochs","mapKeyPairs","result","pair","assertKeyEpoch","raw","ViemVaultKeeperReader","contractAddress","appEntryPoint","version","ViemUniversalChallengerReader"],"mappings":"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"}
@@ -12,7 +12,11 @@ export interface OperationKeyContracts {
12
12
  * Usage:
13
13
  * ```ts
14
14
  * const reader = new ViemOperationKeyReader(publicClient, contracts);
15
- * const keys = await reader.getCurrentOperationKeys(query);
15
+ * // A fresh deposit: the keys current at the block the deposit is built at.
16
+ * const current = await reader.getCurrentOperationKeys(query, blockNumber);
17
+ * // An existing vault (refund, resume, payout, claim): the keys at its
18
+ * // frozen epochs, from `VaultRegistryReader.getVaultKeyEpochs(vaultId)`.
19
+ * const frozen = await reader.getOperationKeysAtEpochs(query, epochs);
16
20
  * ```
17
21
  */
18
22
  export declare class ViemOperationKeyReader implements OperationKeyReader {
@@ -1 +1 @@
1
- {"version":3,"file":"operation-key-reader.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/core/clients/eth/operation-key-reader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAO,OAAO,EAAO,YAAY,EAAE,MAAM,MAAM,CAAC;AAK5D,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;CACzB;AAsDD;;;;;;;;GAQG;AACH,qBAAa,sBAAuB,YAAW,kBAAkB;IAE7D,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,SAAS;gBADT,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,qBAAqB;IAG1C;;;;;OAKG;YACW,OAAO;IAsBf,uBAAuB,CAC3B,KAAK,EAAE,iBAAiB,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IA+BtB,wBAAwB,CAC5B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,gBAAgB,CAAC;IA2CtB,wBAAwB,CAC5B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,gBAAgB,CAAC;CAsC7B"}
1
+ {"version":3,"file":"operation-key-reader.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/core/clients/eth/operation-key-reader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAO,OAAO,EAAO,YAAY,EAAE,MAAM,MAAM,CAAC;AAK5D,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;CACzB;AAsDD;;;;;;;;;;;;GAYG;AACH,qBAAa,sBAAuB,YAAW,kBAAkB;IAE7D,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,SAAS;gBADT,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,qBAAqB;IAG1C;;;;;OAKG;YACW,OAAO;IAsBf,uBAAuB,CAC3B,KAAK,EAAE,iBAAiB,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IA+BtB,wBAAwB,CAC5B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,gBAAgB,CAAC;IA2CtB,wBAAwB,CAC5B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,gBAAgB,CAAC;CAsC7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"signer-set-reader.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/core/clients/eth/signer-set-reader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAO,YAAY,EAAE,MAAM,MAAM,CAAC;AAIvD,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AA4BjB;;;;;;;;GAQG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAE3D,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;gBADf,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,OAAO;IAG5B,wBAAwB,CAC5B,aAAa,EAAE,OAAO,EACtB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAYzB,sBAAsB,CAC1B,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAWzB,6BAA6B,CACjC,aAAa,EAAE,OAAO,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;IAYZ,2BAA2B,CAC/B,aAAa,EAAE,OAAO,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;CAWnB;AAED;;;;;;;;GAQG;AACH,qBAAa,6BAA8B,YAAW,yBAAyB;IAE3E,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;gBADf,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,OAAO;IAG5B,gCAAgC,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAYzB,8BAA8B,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAU9D,oCAAoC,CACxC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;IAWZ,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAUlE"}
1
+ {"version":3,"file":"signer-set-reader.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/core/clients/eth/signer-set-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAO,YAAY,EAAE,MAAM,MAAM,CAAC;AAIvD,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AA4BjB;;;;;;;;GAQG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAE3D,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;gBADf,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,OAAO;IAG5B,wBAAwB,CAC5B,aAAa,EAAE,OAAO,EACtB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAYzB,sBAAsB,CAC1B,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAWzB,6BAA6B,CACjC,aAAa,EAAE,OAAO,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;IAYZ,2BAA2B,CAC/B,aAAa,EAAE,OAAO,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;CAWnB;AAED;;;;;;;;GAQG;AACH,qBAAa,6BAA8B,YAAW,yBAAyB;IAE3E,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;gBADf,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,OAAO;IAG5B,gCAAgC,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAYzB,8BAA8B,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAU9D,oCAAoC,CACxC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;IAWZ,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAUlE"}
@@ -416,6 +416,12 @@ export interface ProtocolParamsReader {
416
416
  */
417
417
  export interface AddressBTCKeyPair {
418
418
  ethAddress: Address;
419
+ /**
420
+ * The member's *registration* (genesis) key as the roster lists it. Under
421
+ * RFC-006 a member can rotate its operation key without changing the
422
+ * roster, so this is not necessarily the key a Bitcoin script commits to:
423
+ * resolve operation keys with {@link OperationKeyReader}.
424
+ */
419
425
  btcPubKey: Hex;
420
426
  }
421
427
  /**
@@ -436,6 +442,13 @@ export interface AddressBTCKeyPair {
436
442
  * they were left alone rather than given a pin no caller would pass.
437
443
  */
438
444
  export interface VaultKeeperReader {
445
+ /**
446
+ * Read the keeper roster at a membership version. Each entry's `btcPubKey`
447
+ * is the keeper's registration key, not necessarily the key its scripts
448
+ * use: for an existing vault resolve the roster at the vault's frozen
449
+ * epochs (`readStampedParticipantKeys`); for a fresh deposit use
450
+ * `validateOnChainParticipantKeys`.
451
+ */
439
452
  getVaultKeepersByVersion(appEntryPoint: Address, version: number, blockNumber?: bigint): Promise<AddressBTCKeyPair[]>;
440
453
  getCurrentVaultKeepers(appEntryPoint: Address): Promise<AddressBTCKeyPair[]>;
441
454
  getCurrentVaultKeepersVersion(appEntryPoint: Address, blockNumber?: bigint): Promise<number>;
@@ -452,6 +465,13 @@ export interface VaultKeeperReader {
452
465
  }
453
466
  /** Interface for reading universal challengers from the ProtocolParams contract. */
454
467
  export interface UniversalChallengerReader {
468
+ /**
469
+ * Read the universal challenger roster at a membership version. Each
470
+ * entry's `btcPubKey` is the challenger's registration key, not necessarily
471
+ * the key its scripts use: for an existing vault resolve the roster at the
472
+ * vault's frozen epochs (`readStampedParticipantKeys`); for a fresh deposit
473
+ * use `validateOnChainParticipantKeys`.
474
+ */
455
475
  getUniversalChallengersByVersion(version: number, blockNumber?: bigint): Promise<AddressBTCKeyPair[]>;
456
476
  getCurrentUniversalChallengers(): Promise<AddressBTCKeyPair[]>;
457
477
  getLatestUniversalChallengersVersion(blockNumber?: bigint): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/core/clients/eth/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/core/clients/eth/types.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  /**
2
2
  * Transport clients for the external systems the SDK talks to (Ethereum, Bitcoin mempool, vault provider RPC).
3
3
  *
4
- * Use the `eth` readers for authoritative vault / protocol / signer-set data at the version a vault pinned
5
- * at registration — signing-critical values must not come from the indexer mirror.
4
+ * Use the `eth` readers for authoritative vault, protocol and signer-set data — signing-critical values
5
+ * must not come from the indexer mirror. Rosters at a vault's pinned membership versions hold registration
6
+ * keys; the keys a vault's scripts commit to are RFC-006 operation keys, read with `ViemOperationKeyReader`:
7
+ * current ones for a fresh deposit, and the ones at the vault's frozen epochs for any existing vault.
6
8
  *
7
9
  * @module clients
8
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tbv/core/clients/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tbv/core/clients/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC"}
@@ -2,7 +2,7 @@ import { BitcoinWallet } from '../../../shared/wallets/interfaces';
2
2
  export interface DepositTermsVaultGroup {
3
3
  /** 0-based; equals the group's position (groups are ascending by vout). */
4
4
  readonly htlcVout: number;
5
- /** x-only hex (64 chars), as validated on-chain upstream. */
5
+ /** x-only hex (64 chars): the vault provider's operation key, resolved on-chain upstream. */
6
6
  readonly vaultProviderBtcPubkey: string;
7
7
  /** sats */
8
8
  readonly peginAmount: bigint;
@@ -69,9 +69,11 @@ export interface DepositTerms {
69
69
  /** sats; the funded Pre-PegIn fee (an approving wallet caps the signed fee at this). */
70
70
  prepeginMaxFee: bigint;
71
71
  /**
72
- * x-only hex. Sorted ascending by the upstream on-chain validation
73
- * (validateOnChainParticipantKeys); the builder passes them through
74
- * unasserted — approving devices may reject unsorted lists at load.
72
+ * x-only hex operation keys, sorted ascending upstream: by
73
+ * validateOnChainParticipantKeys for a fresh deposit, and as the keys at
74
+ * the vault's frozen epochs (what readStampedParticipantKeys resolves) when
75
+ * the terms are rebuilt on resume or at claim time. The builder passes them
76
+ * through unasserted — approving devices may reject unsorted lists at load.
75
77
  */
76
78
  vaultKeeperBtcPubkeys: readonly string[];
77
79
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"depositTerms.d.ts","sourceRoot":"","sources":["../../../../src/tbv/core/deposit-terms/depositTerms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAKxE,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,WAAW;IACX,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;OASG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,4CAA4C;IAC5C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;;OAUG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,cAAc,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC;;;;;OAKG;IACH,6BAA6B,EAAE,SAAS,MAAM,EAAE,CAAC;IACjD,uDAAuD;IACvD,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD;;;;;;;OAOG;IACH,yBAAyB,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE;;;;;;;;;;;OAWG;IACH,oBAAoB,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACrC;AAED,+DAA+D;AAC/D,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,GACpB,MAAM,IAAI,aAAa,GAAG,oBAAoB,CAKhD;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,CA4BtD;AAED,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,6BAA6B,EAAE,SAAS,MAAM,EAAE,CAAC;IACjD,qFAAqF;IACrF,0BAA0B,EAAE,MAAM,CAAC;IACnC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"depositTerms.d.ts","sourceRoot":"","sources":["../../../../src/tbv/core/deposit-terms/depositTerms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAKxE,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6FAA6F;IAC7F,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,WAAW;IACX,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;OASG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,4CAA4C;IAC5C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;;OAUG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC;;;;;OAKG;IACH,6BAA6B,EAAE,SAAS,MAAM,EAAE,CAAC;IACjD,uDAAuD;IACvD,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD;;;;;;;OAOG;IACH,yBAAyB,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE;;;;;;;;;;;OAWG;IACH,oBAAoB,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACrC;AAED,+DAA+D;AAC/D,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,GACpB,MAAM,IAAI,aAAa,GAAG,oBAAoB,CAKhD;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,CA4BtD;AAED,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,6BAA6B,EAAE,SAAS,MAAM,EAAE,CAAC;IACjD,qFAAqF;IACrF,0BAA0B,EAAE,MAAM,CAAC;IACnC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../../verifyScriptPathSchnorrSignature-CgDa9Rcg.cjs"),O=require("../../secp256k1-DDHQ1_za.cjs"),o=require("./wasm/index.cjs"),R=require("../../verifyKeyPathSchnorrSignature-DcxCojp0.cjs"),E=require("../../challengeAssert-BE6Wm4x1.cjs"),r=require("../../bitcoin-D-O2GjbC.cjs"),F=require("../../abortSignals-msbmbqFe.cjs"),I=require("../../signing-DvISftFk.cjs"),P=require("../../validation-C6XTfZak.cjs"),V=require("./utils/eth/index.cjs"),_=require("../../PeginManager-CMbRRTnr.cjs"),d=require("../../PayoutManager-Dopxq_Jv.cjs"),s=require("./clients/mempool/index.cjs"),l=require("../../registration-records-CKc0OVuK.cjs"),C=require("../../signer-set-reader-CJfV-GDz.cjs"),A=require("../../pegin-registration-client-DLlaZbsZ.cjs"),h=require("../../types-BnZIbDHb.cjs"),y=require("../../ApplicationRegistry.abi-sMiTWmnL.cjs"),N=require("../../BTCVaultRegistry.abi-DzbfZ9_s.cjs"),u=require("../../BTCVaultRegistryKeyEpochs.abi-CReWFJdu.cjs"),M=require("../../ProtocolParams.abi-DWfIh6VH.cjs"),b=require("../../VaultErrors.abi-Hjn1CdLs.cjs"),v=require("../../buildVaultContextInputForClaim-9XZaqIiw.cjs"),S=require("../../deriveVaultRoot-C3uqnJto.cjs"),D=require("../../parseFundingOutpoints-C_-PT9BT.cjs"),B=require("../../btcTxHash-CGb5BqFL.cjs"),c=require("../../psbtInputFields-BrV_ZfL_.cjs"),i=require("../../fundPeginTransaction-54-Rwb2k.cjs"),T=require("../../reservation-CA5knoQ0.cjs"),m=require("../../index-Dn7RlsKK.cjs"),a=require("../../state-C4WoNCy1.cjs"),g=require("../../primeVpAuth-Ch-ig2My.cjs"),t=require("../../toRefundInputs-BSQjDOK9.cjs"),e=require("../../buildAndBroadcastReclaim-CVmG3ldA.cjs"),p=require("../../peginState-IyE22wWh.cjs");exports.PEGIN_DEPOSITOR_CLAIM_VOUT=n.PEGIN_DEPOSITOR_CLAIM_VOUT;exports.PsbtSubstitutionError=n.PsbtSubstitutionError;exports.assertPsbtUnsignedTxMatches=n.assertPsbtUnsignedTxMatches;exports.assertScriptPathSchnorrSignature=n.assertScriptPathSchnorrSignature;exports.buildPayoutPsbt=n.buildPayoutPsbt;exports.buildPeginTxFromFundedPrePegin=n.buildPeginTxFromFundedPrePegin;exports.buildPrePeginPsbt=n.buildPrePeginPsbt;exports.computeNumLocalChallengers=n.computeNumLocalChallengers;exports.createPayoutScript=n.createPayoutScript;exports.deriveDepositorClaimDescriptor=n.deriveDepositorClaimDescriptor;exports.deriveDepositorClaimScriptPubKey=n.deriveDepositorClaimScriptPubKey;exports.extractPayoutSignature=n.extractPayoutSignature;exports.assertValidVaultCoreVersion=O.assertValidVaultCoreVersion;exports.attachFinalizedAssert=o.attachFinalizedAssert;exports.computeMinClaimValue=o.computeMinClaimValue;exports.computeMinPeginFee=o.computeMinPeginFee;exports.deriveVaultId=o.deriveVaultId;exports.expandAuthAnchor=o.expandAuthAnchor;exports.expandHashlockSecret=o.expandHashlockSecret;exports.expandWotsSeed=o.expandWotsSeed;exports.finalizePayout=o.finalizePayout;exports.finalizeWronglyChallenged=o.finalizeWronglyChallenged;exports.peginP2aAnchorOutput=o.peginP2aAnchorOutput;exports.pinPegoutProof=o.pinPegoutProof;exports.supportedTxGraphVersions=o.supportedTxGraphVersions;exports.validatePeginP2aAnchor=o.validatePeginP2aAnchor;exports.assertKeyPathSchnorrSignature=R.assertKeyPathSchnorrSignature;exports.assertReturnedKeyPathSignatures=R.assertReturnedKeyPathSignatures;exports.buildPeginInputPsbt=R.buildPeginInputPsbt;exports.extractPeginInputSignature=R.extractPeginInputSignature;exports.finalizePeginInputPsbt=R.finalizePeginInputPsbt;exports.buildChallengeAssertPsbt=E.buildChallengeAssertPsbt;exports.buildNoPayoutPsbt=E.buildNoPayoutPsbt;exports.buildReclaimPsbt=E.buildReclaimPsbt;exports.buildRefundPsbt=E.buildRefundPsbt;exports.estimateReclaimFeeSats=E.estimateReclaimFeeSats;exports.finalizeScriptPathWithSignatures=E.finalizeScriptPathWithSignatures;exports.reclaimVsize=E.reclaimVsize;exports.canonicalizeBtcPubkey=r.canonicalizeBtcPubkey;exports.deriveBip86ScriptPubKeyHex=r.deriveBip86ScriptPubKeyHex;exports.deriveNativeSegwitAddress=r.deriveNativeSegwitAddress;exports.deriveTaprootAddress=r.deriveTaprootAddress;exports.ensureHexPrefix=r.ensureHexPrefix;exports.formatSatoshisToBtc=r.formatSatoshisToBtc;exports.getNetwork=r.getNetwork;exports.getSortedXOnlyPubkeys=r.getSortedXOnlyPubkeys;exports.hexToUint8Array=r.hexToUint8Array;exports.isAddressFromPublicKey=r.isAddressFromPublicKey;exports.isValidHex=r.isValidHex;exports.processPublicKeyToXOnly=r.processPublicKeyToXOnly;exports.stripHexPrefix=r.stripHexPrefix;exports.toXOnly=r.toXOnly;exports.uint8ArrayToHex=r.uint8ArrayToHex;exports.validateWalletPubkey=r.validateWalletPubkey;exports.combineAbortSignals=F.combineAbortSignals;exports.createTaprootScriptPathSignOptions=I.createTaprootScriptPathSignOptions;exports.createTaprootScriptPathSignOptionsForInput=I.createTaprootScriptPathSignOptionsForInput;exports.BITCOIN_ADDRESS_RE=P.BITCOIN_ADDRESS_RE;exports.COMPRESSED_PUBKEY_HEX_LEN=P.COMPRESSED_PUBKEY_HEX_LEN;exports.HEX_RE=P.HEX_RE;exports.KNOWN_SCRIPT_PREFIXES=P.KNOWN_SCRIPT_PREFIXES;exports.MAX_REASONABLE_FEE_SATS=P.MAX_REASONABLE_FEE_SATS;exports.TXID_RE=P.TXID_RE;exports.X_ONLY_PUBKEY_HEX_LEN=P.X_ONLY_PUBKEY_HEX_LEN;exports.waitForTransactionReceiptSmartAware=V.waitForTransactionReceiptSmartAware;exports.PeginManager=_.PeginManager;exports.buildDepositTerms=_.buildDepositTerms;exports.computeWotsBlockPublicKeysHash=_.computeWotsBlockPublicKeysHash;exports.deriveWotsBlocksFromSeed=_.deriveWotsBlocksFromSeed;exports.ensurePrePeginTermsApproval=_.ensurePrePeginTermsApproval;exports.PayoutManager=d.PayoutManager;exports.computeHashlock=d.computeHashlock;exports.forwardDepositApproval=d.forwardDepositApproval;exports.requireChangeAddress=d.requireChangeAddress;exports.supportsDepositApproval=d.supportsDepositApproval;exports.validateSecretAgainstHashlock=d.validateSecretAgainstHashlock;exports.MEMPOOL_API_URLS=s.MEMPOOL_API_URLS;exports.MempoolNotFoundError=s.MempoolNotFoundError;exports.getAddressTxs=s.getAddressTxs;exports.getAddressUtxos=s.getAddressUtxos;exports.getMempoolApiUrl=s.getMempoolApiUrl;exports.getNetworkFees=s.getNetworkFees;exports.getOutspend=s.getOutspend;exports.getTipHeight=s.getTipHeight;exports.getTxHex=s.getTxHex;exports.getTxInfo=s.getTxInfo;exports.getUtxoInfo=s.getUtxoInfo;exports.pushTx=s.pushTx;exports.RegistrationLogsUnavailableError=l.RegistrationLogsUnavailableError;exports.VaultClaimableByNotFoundError=l.VaultClaimableByNotFoundError;exports.assertOnChainBtcPubkey=l.assertOnChainBtcPubkey;exports.assertRegisteredPayoutScriptBounds=l.assertRegisteredPayoutScriptBounds;exports.derivePeginVaultId=l.derivePeginVaultId;exports.findRegistrationRecord=l.findRegistrationRecord;exports.isRegistrationLogsUnavailableError=l.isRegistrationLogsUnavailableError;exports.isVaultClaimableByNotFoundError=l.isVaultClaimableByNotFoundError;exports.registrationPrePeginTxHash=l.registrationPrePeginTxHash;exports.validateOffchainParams=l.validateOffchainParams;exports.validatePegInConfiguration=l.validatePegInConfiguration;exports.validateTBVProtocolParams=l.validateTBVProtocolParams;exports.ViemOperationKeyReader=C.ViemOperationKeyReader;exports.ViemUniversalChallengerReader=C.ViemUniversalChallengerReader;exports.ViemVaultKeeperReader=C.ViemVaultKeeperReader;exports.resolveProtocolAddresses=C.resolveProtocolAddresses;exports.COMMISSION_BPS_HEADROOM=A.COMMISSION_BPS_HEADROOM;exports.MAX_ACCEPTABLE_COMMISSION_BPS_CAP=A.MAX_ACCEPTABLE_COMMISSION_BPS_CAP;exports.ViemPeginRegistrationClient=A.ViemPeginRegistrationClient;exports.ViemVaultRegistryReader=A.ViemVaultRegistryReader;exports.capMaxAcceptableCommissionBps=A.capMaxAcceptableCommissionBps;exports.OnChainBtcVaultStatus=h.OnChainBtcVaultStatus;exports.ViemProtocolParamsReader=h.ViemProtocolParamsReader;exports.ApplicationRegistryABI=y.ApplicationRegistryABI;exports.BTCVaultRegistryABI=N.BTCVaultRegistryABI;exports.BTCVaultRegistryKeyEpochsABI=u.BTCVaultRegistryKeyEpochsABI;exports.CONTRACT_ERRORS=u.CONTRACT_ERRORS;exports.EMPTY_REVERT_MESSAGE=u.EMPTY_REVERT_MESSAGE;exports.PEGIN_FINGERPRINT_CHANGED_SELECTOR=u.PEGIN_FINGERPRINT_CHANGED_SELECTOR;exports.PeginFingerprintChangedError=u.PeginFingerprintChangedError;exports.extractErrorData=u.extractErrorData;exports.getContractErrorMessage=u.getContractErrorMessage;exports.handleContractError=u.handleContractError;exports.isKnownContractError=u.isKnownContractError;exports.isPeginFingerprintChangedError=u.isPeginFingerprintChangedError;exports.ProtocolParamsABI=M.ProtocolParamsABI;exports.VAULT_ERROR_ABI=b.VAULT_ERROR_ABI;exports.buildVaultContextInputForClaim=v.buildVaultContextInputForClaim;exports.VAULT_APP_NAME=S.VAULT_APP_NAME;exports.buildFundingOutpointsCommitment=S.buildFundingOutpointsCommitment;exports.buildVaultContext=S.buildVaultContext;exports.deriveVaultRoot=S.deriveVaultRoot;exports.forwardDeriveContextHash=S.forwardDeriveContextHash;exports.parseFundingOutpointsFromTx=D.parseFundingOutpointsFromTx;exports.calculateBtcTxHash=B.calculateBtcTxHash;exports.BitcoinScriptType=c.BitcoinScriptType;exports.applyChangeOutputPolicy=c.applyChangeOutputPolicy;exports.computeChangeOutputFeeSats=c.computeChangeOutputFeeSats;exports.computeMaxDeposit=c.computeMaxDeposit;exports.computePeginBaseFeeSats=c.computePeginBaseFeeSats;exports.getDustThreshold=c.getDustThreshold;exports.getPsbtInputFields=c.getPsbtInputFields;exports.getScriptType=c.getScriptType;exports.selectUtxosForPegin=c.selectUtxosForPegin;exports.shouldAddChangeOutput=c.shouldAddChangeOutput;exports.BTC_DUST_SAT=i.BTC_DUST_SAT;exports.DUST_THRESHOLD=i.DUST_THRESHOLD;exports.LOW_RATE_ESTIMATION_ACCURACY_BUFFER=i.LOW_RATE_ESTIMATION_ACCURACY_BUFFER;exports.MAX_NON_LEGACY_OUTPUT_SIZE=i.MAX_NON_LEGACY_OUTPUT_SIZE;exports.MAX_REASONABLE_PEGIN_VBYTES=i.MAX_REASONABLE_PEGIN_VBYTES;exports.P2TR_INPUT_SIZE=i.P2TR_INPUT_SIZE;exports.PEGIN_AUTH_ANCHOR_OUTPUTS=i.PEGIN_AUTH_ANCHOR_OUTPUTS;exports.PEGIN_FIXED_OUTPUTS=i.PEGIN_FIXED_OUTPUTS;exports.SPLIT_TX_FEE_SAFETY_MULTIPLIER=i.SPLIT_TX_FEE_SAFETY_MULTIPLIER;exports.TX_BUFFER_SIZE_OVERHEAD=i.TX_BUFFER_SIZE_OVERHEAD;exports.WALLET_RELAY_FEE_RATE_THRESHOLD=i.WALLET_RELAY_FEE_RATE_THRESHOLD;exports.fundPeginTransaction=i.fundPeginTransaction;exports.parseUnfundedWasmTransaction=i.parseUnfundedWasmTransaction;exports.peginOutputCount=i.peginOutputCount;exports.rateBasedTxBufferFee=i.rateBasedTxBufferFee;exports.UtxoNotAvailableError=T.UtxoNotAvailableError;exports.assertUtxosAvailable=T.assertUtxosAvailable;exports.extractInputsFromTransaction=T.extractInputsFromTransaction;exports.findOverlappingPendingVaults=T.findOverlappingPendingVaults;exports.validateUtxosAvailable=T.validateUtxosAvailable;exports.VaultProviderRpcClient=m.VaultProviderRpcClient;exports.VpResponseValidationError=m.VpResponseValidationError;exports.batchPollByProvider=m.batchPollByProvider;exports.isUnrecognizedDaemonStatusError=m.isUnrecognizedDaemonStatusError;exports.validateRequestDepositorClaimerArtifactsResponse=m.validateRequestDepositorClaimerArtifactsResponse;exports.AUTH_REJECTED_RPC_CODE=a.AUTH_REJECTED_RPC_CODE;exports.ClaimerPegoutStatusValue=a.ClaimerPegoutStatusValue;exports.DaemonStatus=a.DaemonStatus;exports.JSON_RPC_ERROR_CODES=a.JSON_RPC_ERROR_CODES;exports.JsonRpcClient=a.JsonRpcClient;exports.JsonRpcError=a.JsonRpcError;exports.POST_WOTS_STATUSES=a.POST_WOTS_STATUSES;exports.PRE_DEPOSITOR_SIGNATURES_STATES=a.PRE_DEPOSITOR_SIGNATURES_STATES;exports.RpcErrorCode=a.RpcErrorCode;exports.VP_BATCH_MAX_SIZE=a.VP_BATCH_MAX_SIZE;exports.VP_TERMINAL_FAILURE_STATUSES=a.VP_TERMINAL_FAILURE_STATUSES;exports.VP_TRANSIENT_STATUSES=a.VP_TRANSIENT_STATUSES;exports.isAuthRejectedError=a.isAuthRejectedError;exports.isPegoutTerminalStatus=a.isPegoutTerminalStatus;exports.isRecognizedPegoutStatus=a.isRecognizedPegoutStatus;exports.ServerIdentityError=g.ServerIdentityError;exports.VpTokenRegistry=g.VpTokenRegistry;exports.createAuthenticatedVpClient=g.createAuthenticatedVpClient;exports.primeVpTokenRegistry=g.primeVpTokenRegistry;exports.verifyServerIdentity=g.verifyServerIdentity;exports.vpTokenRegistry=g.vpTokenRegistry;exports.DEPOSIT_TERMS_REJECTED_ERROR_NAME=t.DEPOSIT_TERMS_REJECTED_ERROR_NAME;exports.DepositTermsRejectedError=t.DepositTermsRejectedError;exports.PEGIN_FINGERPRINT_DOMAIN=t.PEGIN_FINGERPRINT_DOMAIN;exports.PEGIN_FINGERPRINT_DOMAIN_PREIMAGE=t.PEGIN_FINGERPRINT_DOMAIN_PREIMAGE;exports.PeginFingerprintInputError=t.PeginFingerprintInputError;exports.PeginParamsAmbiguousError=t.PeginParamsAmbiguousError;exports.PeginParamsIncompleteSpaceError=t.PeginParamsIncompleteSpaceError;exports.PeginParamsNotFoundError=t.PeginParamsNotFoundError;exports.PeginSizingIntegrityError=t.PeginSizingIntegrityError;exports.UnanchoredPrePeginError=t.UnanchoredPrePeginError;exports.VaultRootMismatchError=t.VaultRootMismatchError;exports.assertClaimBatchHomogeneous=t.assertClaimBatchHomogeneous;exports.buildPeginParamsCandidates=t.buildPeginParamsCandidates;exports.computeFundedPrePeginFee=t.computeFundedPrePeginFee;exports.computePeginFingerprint=t.computePeginFingerprint;exports.deriveHashlocksFromPrePegin=t.deriveHashlocksFromPrePegin;exports.describePeginParamsCandidate=t.describePeginParamsCandidate;exports.describeUnresolvedVersion=t.describeUnresolvedVersion;exports.encodePeginFingerprintPreimage=t.encodePeginFingerprintPreimage;exports.isDepositTermsRejectedError=t.isDepositTermsRejectedError;exports.isPeginFingerprintInputError=t.isPeginFingerprintInputError;exports.isWotsMismatchError=t.isWotsMismatchError;exports.orderClaimBatchByHtlcVout=t.orderClaimBatchByHtlcVout;exports.rebuildDepositTermsCore=t.rebuildDepositTermsCore;exports.rebuildDepositTermsForClaim=t.rebuildDepositTermsForClaim;exports.reconstructPeginParams=t.reconstructPeginParams;exports.selectSiblingRegistrations=t.selectSiblingRegistrations;exports.toRefundInputs=t.toRefundInputs;exports.ApplicationEntryPointMismatchError=e.ApplicationEntryPointMismatchError;exports.ArtifactsVaultMismatchError=e.ArtifactsVaultMismatchError;exports.AssertBindingError=e.AssertBindingError;exports.BIP68NotMatureError=e.BIP68NotMatureError;exports.ChallengerSetMismatchError=e.ChallengerSetMismatchError;exports.DELEGATED_CLAIM_TX_GRAPH_VERSION=e.DELEGATED_CLAIM_TX_GRAPH_VERSION;exports.DelegatedClaimSigningIncompleteError=e.DelegatedClaimSigningIncompleteError;exports.GraphFingerprintError=e.GraphFingerprintError;exports.PEGIN_ETH_CONFIRMATIONS=e.PEGIN_ETH_CONFIRMATIONS;exports.ParticipantKeyDriftError=e.ParticipantKeyDriftError;exports.PayoutDestinationError=e.PayoutDestinationError;exports.PayoutInputLeafError=e.PayoutInputLeafError;exports.PeginRegistrationMissingError=e.PeginRegistrationMissingError;exports.PeginRegistrationNotFinalError=e.PeginRegistrationNotFinalError;exports.RECLAIM_MAX_FEE_FRACTION_DENOMINATOR=e.RECLAIM_MAX_FEE_FRACTION_DENOMINATOR;exports.RECLAIM_MAX_FEE_FRACTION_NUMERATOR=e.RECLAIM_MAX_FEE_FRACTION_NUMERATOR;exports.RECLAIM_MAX_FEE_RATE_SATS_VB=e.RECLAIM_MAX_FEE_RATE_SATS_VB;exports.RECLAIM_WARN_FEE_FRACTION_NUMERATOR=e.RECLAIM_WARN_FEE_FRACTION_NUMERATOR;exports.REFUND_MAX_FEE_FRACTION_DENOMINATOR=e.REFUND_MAX_FEE_FRACTION_DENOMINATOR;exports.REFUND_MAX_FEE_FRACTION_NUMERATOR=e.REFUND_MAX_FEE_FRACTION_NUMERATOR;exports.REFUND_MAX_FEE_RATE_SATS_VB=e.REFUND_MAX_FEE_RATE_SATS_VB;exports.REFUND_VSIZE=e.REFUND_VSIZE;exports.ReclaimUneconomicalError=e.ReclaimUneconomicalError;exports.RegisteredVaultVersionMismatchError=e.RegisteredVaultVersionMismatchError;exports.SigningPlanMismatchError=e.SigningPlanMismatchError;exports.VaultIdBindingError=e.VaultIdBindingError;exports.activateVault=e.activateVault;exports.activateVaultAndRedeem=e.activateVaultAndRedeem;exports.assembleWatchtowerArtifacts=e.assembleWatchtowerArtifacts;exports.assembleWatchtowerArtifactsFromSignatures=e.assembleWatchtowerArtifactsFromSignatures;exports.assertArtifactsUsableForVault=e.assertArtifactsUsableForVault;exports.assertAssertBindsClaimAndPayout=e.assertAssertBindsClaimAndPayout;exports.assertChallengerSetMatchesVault=e.assertChallengerSetMatchesVault;exports.assertClaimSpendsVault=e.assertClaimSpendsVault;exports.assertPayoutPaysRegisteredScript=e.assertPayoutPaysRegisteredScript;exports.assertReturnedGraphMatchesFingerprint=e.assertReturnedGraphMatchesFingerprint;exports.assertTermsMatchVault=e.assertTermsMatchVault;exports.assertVaultProviderHintAccepted=e.assertVaultProviderHintAccepted;exports.buildAndBroadcastReclaim=e.buildAndBroadcastReclaim;exports.buildAndBroadcastRefund=e.buildAndBroadcastRefund;exports.claimExpiredVault=e.claimExpiredVault;exports.copyAssertConnectorLeaf=e.copyAssertConnectorLeaf;exports.deriveClaimerWotsKeypair=e.deriveClaimerWotsKeypair;exports.estimateRefundFeeSats=e.estimateRefundFeeSats;exports.fingerprintReturnedGraph=e.fingerprintReturnedGraph;exports.isApplicationEntryPointMismatchError=e.isApplicationEntryPointMismatchError;exports.isDepositAmountValid=e.isDepositAmountValid;exports.isHintAccepted=e.isHintAccepted;exports.isParticipantKeyDriftError=e.isParticipantKeyDriftError;exports.isPeginRegistrationMissingError=e.isPeginRegistrationMissingError;exports.isPeginRegistrationNotFinalError=e.isPeginRegistrationNotFinalError;exports.isRegisteredVaultVersionMismatchError=e.isRegisteredVaultVersionMismatchError;exports.matchKeyHint=e.matchKeyHint;exports.matchKeySetHint=e.matchKeySetHint;exports.planDelegatedClaimSigning=e.planDelegatedClaimSigning;exports.readDelegatedClaimVaultContext=e.readDelegatedClaimVaultContext;exports.readStampedParticipantKeys=e.readStampedParticipantKeys;exports.resolveCurrentParticipantKeys=e.resolveCurrentParticipantKeys;exports.resolveParticipantKeysAtEpochs=e.resolveParticipantKeysAtEpochs;exports.runDepositorPresignFlow=e.runDepositorPresignFlow;exports.signDelegatedClaimPlan=e.signDelegatedClaimPlan;exports.signDepositorGraph=e.signDepositorGraph;exports.submitWotsPublicKey=e.submitWotsPublicKey;exports.summarizeWatchtowerArtifacts=e.summarizeWatchtowerArtifacts;exports.validateDepositAmount=e.validateDepositAmount;exports.validateMultiVaultDepositInputs=e.validateMultiVaultDepositInputs;exports.validateOnChainParticipantKeys=e.validateOnChainParticipantKeys;exports.validateProviderSelection=e.validateProviderSelection;exports.validateRemainingCapacity=e.validateRemainingCapacity;exports.validateVaultAmounts=e.validateVaultAmounts;exports.validateVaultProviderPubkey=e.validateVaultProviderPubkey;exports.verifyRegisteredParticipantKeys=e.verifyRegisteredParticipantKeys;exports.verifyRegisteredVaultVersions=e.verifyRegisteredVaultVersions;exports.waitForPeginRegistrationDepth=e.waitForPeginRegistrationDepth;exports.waitForPeginStatus=e.waitForPeginStatus;exports.ContractStatus=p.ContractStatus;exports.PeginAction=p.PeginAction;exports.activationDeadlineBlocksRemaining=p.activationDeadlineBlocksRemaining;exports.canPerformAction=p.canPerformAction;exports.getPeginProtocolState=p.getPeginProtocolState;exports.isActivationDeadlinePassedOnChain=p.isActivationDeadlinePassedOnChain;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../verifyScriptPathSchnorrSignature-CgDa9Rcg.cjs"),O=require("../../secp256k1-DDHQ1_za.cjs"),n=require("./wasm/index.cjs"),R=require("../../verifyKeyPathSchnorrSignature-DcxCojp0.cjs"),E=require("../../challengeAssert-eUMgmpMk.cjs"),r=require("../../bitcoin-D-O2GjbC.cjs"),F=require("../../abortSignals-msbmbqFe.cjs"),I=require("../../signing-DvISftFk.cjs"),P=require("../../validation-C6XTfZak.cjs"),V=require("./utils/eth/index.cjs"),_=require("../../PeginManager-CMbRRTnr.cjs"),d=require("../../PayoutManager-Dopxq_Jv.cjs"),s=require("./clients/mempool/index.cjs"),l=require("../../registration-records-CKc0OVuK.cjs"),C=require("../../signer-set-reader-CJfV-GDz.cjs"),A=require("../../pegin-registration-client-DLlaZbsZ.cjs"),h=require("../../types-BnZIbDHb.cjs"),y=require("../../ApplicationRegistry.abi-sMiTWmnL.cjs"),N=require("../../BTCVaultRegistry.abi-DzbfZ9_s.cjs"),u=require("../../BTCVaultRegistryKeyEpochs.abi-CReWFJdu.cjs"),M=require("../../ProtocolParams.abi-DWfIh6VH.cjs"),b=require("../../VaultErrors.abi-Hjn1CdLs.cjs"),v=require("../../buildVaultContextInputForClaim-9XZaqIiw.cjs"),S=require("../../deriveVaultRoot-C3uqnJto.cjs"),D=require("../../parseFundingOutpoints-C_-PT9BT.cjs"),B=require("../../btcTxHash-CGb5BqFL.cjs"),c=require("../../psbtInputFields-BrV_ZfL_.cjs"),i=require("../../fundPeginTransaction-54-Rwb2k.cjs"),T=require("../../reservation-CA5knoQ0.cjs"),m=require("../../index-Dn7RlsKK.cjs"),a=require("../../state-C4WoNCy1.cjs"),g=require("../../primeVpAuth-Ch-ig2My.cjs"),t=require("../../toRefundInputs-BSQjDOK9.cjs"),e=require("../../buildAndBroadcastReclaim-OBWjvzuC.cjs"),p=require("../../peginState-IyE22wWh.cjs");exports.PEGIN_DEPOSITOR_CLAIM_VOUT=o.PEGIN_DEPOSITOR_CLAIM_VOUT;exports.PsbtSubstitutionError=o.PsbtSubstitutionError;exports.assertPsbtUnsignedTxMatches=o.assertPsbtUnsignedTxMatches;exports.assertScriptPathSchnorrSignature=o.assertScriptPathSchnorrSignature;exports.buildPayoutPsbt=o.buildPayoutPsbt;exports.buildPeginTxFromFundedPrePegin=o.buildPeginTxFromFundedPrePegin;exports.buildPrePeginPsbt=o.buildPrePeginPsbt;exports.computeNumLocalChallengers=o.computeNumLocalChallengers;exports.createPayoutScript=o.createPayoutScript;exports.deriveDepositorClaimDescriptor=o.deriveDepositorClaimDescriptor;exports.deriveDepositorClaimScriptPubKey=o.deriveDepositorClaimScriptPubKey;exports.extractPayoutSignature=o.extractPayoutSignature;exports.assertValidVaultCoreVersion=O.assertValidVaultCoreVersion;exports.attachFinalizedAssert=n.attachFinalizedAssert;exports.computeMinClaimValue=n.computeMinClaimValue;exports.computeMinPeginFee=n.computeMinPeginFee;exports.deriveVaultId=n.deriveVaultId;exports.expandAuthAnchor=n.expandAuthAnchor;exports.expandHashlockSecret=n.expandHashlockSecret;exports.expandWotsSeed=n.expandWotsSeed;exports.finalizePayout=n.finalizePayout;exports.finalizeWronglyChallenged=n.finalizeWronglyChallenged;exports.peginP2aAnchorOutput=n.peginP2aAnchorOutput;exports.pinPegoutProof=n.pinPegoutProof;exports.supportedTxGraphVersions=n.supportedTxGraphVersions;exports.validatePeginP2aAnchor=n.validatePeginP2aAnchor;exports.assertKeyPathSchnorrSignature=R.assertKeyPathSchnorrSignature;exports.assertReturnedKeyPathSignatures=R.assertReturnedKeyPathSignatures;exports.buildPeginInputPsbt=R.buildPeginInputPsbt;exports.extractPeginInputSignature=R.extractPeginInputSignature;exports.finalizePeginInputPsbt=R.finalizePeginInputPsbt;exports.buildChallengeAssertPsbt=E.buildChallengeAssertPsbt;exports.buildNoPayoutPsbt=E.buildNoPayoutPsbt;exports.buildReclaimPsbt=E.buildReclaimPsbt;exports.buildRefundPsbt=E.buildRefundPsbt;exports.estimateReclaimFeeSats=E.estimateReclaimFeeSats;exports.finalizeScriptPathWithSignatures=E.finalizeScriptPathWithSignatures;exports.reclaimVsize=E.reclaimVsize;exports.canonicalizeBtcPubkey=r.canonicalizeBtcPubkey;exports.deriveBip86ScriptPubKeyHex=r.deriveBip86ScriptPubKeyHex;exports.deriveNativeSegwitAddress=r.deriveNativeSegwitAddress;exports.deriveTaprootAddress=r.deriveTaprootAddress;exports.ensureHexPrefix=r.ensureHexPrefix;exports.formatSatoshisToBtc=r.formatSatoshisToBtc;exports.getNetwork=r.getNetwork;exports.getSortedXOnlyPubkeys=r.getSortedXOnlyPubkeys;exports.hexToUint8Array=r.hexToUint8Array;exports.isAddressFromPublicKey=r.isAddressFromPublicKey;exports.isValidHex=r.isValidHex;exports.processPublicKeyToXOnly=r.processPublicKeyToXOnly;exports.stripHexPrefix=r.stripHexPrefix;exports.toXOnly=r.toXOnly;exports.uint8ArrayToHex=r.uint8ArrayToHex;exports.validateWalletPubkey=r.validateWalletPubkey;exports.combineAbortSignals=F.combineAbortSignals;exports.createTaprootScriptPathSignOptions=I.createTaprootScriptPathSignOptions;exports.createTaprootScriptPathSignOptionsForInput=I.createTaprootScriptPathSignOptionsForInput;exports.BITCOIN_ADDRESS_RE=P.BITCOIN_ADDRESS_RE;exports.COMPRESSED_PUBKEY_HEX_LEN=P.COMPRESSED_PUBKEY_HEX_LEN;exports.HEX_RE=P.HEX_RE;exports.KNOWN_SCRIPT_PREFIXES=P.KNOWN_SCRIPT_PREFIXES;exports.MAX_REASONABLE_FEE_SATS=P.MAX_REASONABLE_FEE_SATS;exports.TXID_RE=P.TXID_RE;exports.X_ONLY_PUBKEY_HEX_LEN=P.X_ONLY_PUBKEY_HEX_LEN;exports.waitForTransactionReceiptSmartAware=V.waitForTransactionReceiptSmartAware;exports.PeginManager=_.PeginManager;exports.buildDepositTerms=_.buildDepositTerms;exports.computeWotsBlockPublicKeysHash=_.computeWotsBlockPublicKeysHash;exports.deriveWotsBlocksFromSeed=_.deriveWotsBlocksFromSeed;exports.ensurePrePeginTermsApproval=_.ensurePrePeginTermsApproval;exports.PayoutManager=d.PayoutManager;exports.computeHashlock=d.computeHashlock;exports.forwardDepositApproval=d.forwardDepositApproval;exports.requireChangeAddress=d.requireChangeAddress;exports.supportsDepositApproval=d.supportsDepositApproval;exports.validateSecretAgainstHashlock=d.validateSecretAgainstHashlock;exports.MEMPOOL_API_URLS=s.MEMPOOL_API_URLS;exports.MempoolNotFoundError=s.MempoolNotFoundError;exports.getAddressTxs=s.getAddressTxs;exports.getAddressUtxos=s.getAddressUtxos;exports.getMempoolApiUrl=s.getMempoolApiUrl;exports.getNetworkFees=s.getNetworkFees;exports.getOutspend=s.getOutspend;exports.getTipHeight=s.getTipHeight;exports.getTxHex=s.getTxHex;exports.getTxInfo=s.getTxInfo;exports.getUtxoInfo=s.getUtxoInfo;exports.pushTx=s.pushTx;exports.RegistrationLogsUnavailableError=l.RegistrationLogsUnavailableError;exports.VaultClaimableByNotFoundError=l.VaultClaimableByNotFoundError;exports.assertOnChainBtcPubkey=l.assertOnChainBtcPubkey;exports.assertRegisteredPayoutScriptBounds=l.assertRegisteredPayoutScriptBounds;exports.derivePeginVaultId=l.derivePeginVaultId;exports.findRegistrationRecord=l.findRegistrationRecord;exports.isRegistrationLogsUnavailableError=l.isRegistrationLogsUnavailableError;exports.isVaultClaimableByNotFoundError=l.isVaultClaimableByNotFoundError;exports.registrationPrePeginTxHash=l.registrationPrePeginTxHash;exports.validateOffchainParams=l.validateOffchainParams;exports.validatePegInConfiguration=l.validatePegInConfiguration;exports.validateTBVProtocolParams=l.validateTBVProtocolParams;exports.ViemOperationKeyReader=C.ViemOperationKeyReader;exports.ViemUniversalChallengerReader=C.ViemUniversalChallengerReader;exports.ViemVaultKeeperReader=C.ViemVaultKeeperReader;exports.resolveProtocolAddresses=C.resolveProtocolAddresses;exports.COMMISSION_BPS_HEADROOM=A.COMMISSION_BPS_HEADROOM;exports.MAX_ACCEPTABLE_COMMISSION_BPS_CAP=A.MAX_ACCEPTABLE_COMMISSION_BPS_CAP;exports.ViemPeginRegistrationClient=A.ViemPeginRegistrationClient;exports.ViemVaultRegistryReader=A.ViemVaultRegistryReader;exports.capMaxAcceptableCommissionBps=A.capMaxAcceptableCommissionBps;exports.OnChainBtcVaultStatus=h.OnChainBtcVaultStatus;exports.ViemProtocolParamsReader=h.ViemProtocolParamsReader;exports.ApplicationRegistryABI=y.ApplicationRegistryABI;exports.BTCVaultRegistryABI=N.BTCVaultRegistryABI;exports.BTCVaultRegistryKeyEpochsABI=u.BTCVaultRegistryKeyEpochsABI;exports.CONTRACT_ERRORS=u.CONTRACT_ERRORS;exports.EMPTY_REVERT_MESSAGE=u.EMPTY_REVERT_MESSAGE;exports.PEGIN_FINGERPRINT_CHANGED_SELECTOR=u.PEGIN_FINGERPRINT_CHANGED_SELECTOR;exports.PeginFingerprintChangedError=u.PeginFingerprintChangedError;exports.extractErrorData=u.extractErrorData;exports.getContractErrorMessage=u.getContractErrorMessage;exports.handleContractError=u.handleContractError;exports.isKnownContractError=u.isKnownContractError;exports.isPeginFingerprintChangedError=u.isPeginFingerprintChangedError;exports.ProtocolParamsABI=M.ProtocolParamsABI;exports.VAULT_ERROR_ABI=b.VAULT_ERROR_ABI;exports.buildVaultContextInputForClaim=v.buildVaultContextInputForClaim;exports.VAULT_APP_NAME=S.VAULT_APP_NAME;exports.buildFundingOutpointsCommitment=S.buildFundingOutpointsCommitment;exports.buildVaultContext=S.buildVaultContext;exports.deriveVaultRoot=S.deriveVaultRoot;exports.forwardDeriveContextHash=S.forwardDeriveContextHash;exports.parseFundingOutpointsFromTx=D.parseFundingOutpointsFromTx;exports.calculateBtcTxHash=B.calculateBtcTxHash;exports.BitcoinScriptType=c.BitcoinScriptType;exports.applyChangeOutputPolicy=c.applyChangeOutputPolicy;exports.computeChangeOutputFeeSats=c.computeChangeOutputFeeSats;exports.computeMaxDeposit=c.computeMaxDeposit;exports.computePeginBaseFeeSats=c.computePeginBaseFeeSats;exports.getDustThreshold=c.getDustThreshold;exports.getPsbtInputFields=c.getPsbtInputFields;exports.getScriptType=c.getScriptType;exports.selectUtxosForPegin=c.selectUtxosForPegin;exports.shouldAddChangeOutput=c.shouldAddChangeOutput;exports.BTC_DUST_SAT=i.BTC_DUST_SAT;exports.DUST_THRESHOLD=i.DUST_THRESHOLD;exports.LOW_RATE_ESTIMATION_ACCURACY_BUFFER=i.LOW_RATE_ESTIMATION_ACCURACY_BUFFER;exports.MAX_NON_LEGACY_OUTPUT_SIZE=i.MAX_NON_LEGACY_OUTPUT_SIZE;exports.MAX_REASONABLE_PEGIN_VBYTES=i.MAX_REASONABLE_PEGIN_VBYTES;exports.P2TR_INPUT_SIZE=i.P2TR_INPUT_SIZE;exports.PEGIN_AUTH_ANCHOR_OUTPUTS=i.PEGIN_AUTH_ANCHOR_OUTPUTS;exports.PEGIN_FIXED_OUTPUTS=i.PEGIN_FIXED_OUTPUTS;exports.SPLIT_TX_FEE_SAFETY_MULTIPLIER=i.SPLIT_TX_FEE_SAFETY_MULTIPLIER;exports.TX_BUFFER_SIZE_OVERHEAD=i.TX_BUFFER_SIZE_OVERHEAD;exports.WALLET_RELAY_FEE_RATE_THRESHOLD=i.WALLET_RELAY_FEE_RATE_THRESHOLD;exports.fundPeginTransaction=i.fundPeginTransaction;exports.parseUnfundedWasmTransaction=i.parseUnfundedWasmTransaction;exports.peginOutputCount=i.peginOutputCount;exports.rateBasedTxBufferFee=i.rateBasedTxBufferFee;exports.UtxoNotAvailableError=T.UtxoNotAvailableError;exports.assertUtxosAvailable=T.assertUtxosAvailable;exports.extractInputsFromTransaction=T.extractInputsFromTransaction;exports.findOverlappingPendingVaults=T.findOverlappingPendingVaults;exports.validateUtxosAvailable=T.validateUtxosAvailable;exports.VaultProviderRpcClient=m.VaultProviderRpcClient;exports.VpResponseValidationError=m.VpResponseValidationError;exports.batchPollByProvider=m.batchPollByProvider;exports.isUnrecognizedDaemonStatusError=m.isUnrecognizedDaemonStatusError;exports.validateRequestDepositorClaimerArtifactsResponse=m.validateRequestDepositorClaimerArtifactsResponse;exports.AUTH_REJECTED_RPC_CODE=a.AUTH_REJECTED_RPC_CODE;exports.ClaimerPegoutStatusValue=a.ClaimerPegoutStatusValue;exports.DaemonStatus=a.DaemonStatus;exports.JSON_RPC_ERROR_CODES=a.JSON_RPC_ERROR_CODES;exports.JsonRpcClient=a.JsonRpcClient;exports.JsonRpcError=a.JsonRpcError;exports.POST_WOTS_STATUSES=a.POST_WOTS_STATUSES;exports.PRE_DEPOSITOR_SIGNATURES_STATES=a.PRE_DEPOSITOR_SIGNATURES_STATES;exports.RpcErrorCode=a.RpcErrorCode;exports.VP_BATCH_MAX_SIZE=a.VP_BATCH_MAX_SIZE;exports.VP_TERMINAL_FAILURE_STATUSES=a.VP_TERMINAL_FAILURE_STATUSES;exports.VP_TRANSIENT_STATUSES=a.VP_TRANSIENT_STATUSES;exports.isAuthRejectedError=a.isAuthRejectedError;exports.isPegoutTerminalStatus=a.isPegoutTerminalStatus;exports.isRecognizedPegoutStatus=a.isRecognizedPegoutStatus;exports.ServerIdentityError=g.ServerIdentityError;exports.VpTokenRegistry=g.VpTokenRegistry;exports.createAuthenticatedVpClient=g.createAuthenticatedVpClient;exports.primeVpTokenRegistry=g.primeVpTokenRegistry;exports.verifyServerIdentity=g.verifyServerIdentity;exports.vpTokenRegistry=g.vpTokenRegistry;exports.DEPOSIT_TERMS_REJECTED_ERROR_NAME=t.DEPOSIT_TERMS_REJECTED_ERROR_NAME;exports.DepositTermsRejectedError=t.DepositTermsRejectedError;exports.PEGIN_FINGERPRINT_DOMAIN=t.PEGIN_FINGERPRINT_DOMAIN;exports.PEGIN_FINGERPRINT_DOMAIN_PREIMAGE=t.PEGIN_FINGERPRINT_DOMAIN_PREIMAGE;exports.PeginFingerprintInputError=t.PeginFingerprintInputError;exports.PeginParamsAmbiguousError=t.PeginParamsAmbiguousError;exports.PeginParamsIncompleteSpaceError=t.PeginParamsIncompleteSpaceError;exports.PeginParamsNotFoundError=t.PeginParamsNotFoundError;exports.PeginSizingIntegrityError=t.PeginSizingIntegrityError;exports.UnanchoredPrePeginError=t.UnanchoredPrePeginError;exports.VaultRootMismatchError=t.VaultRootMismatchError;exports.assertClaimBatchHomogeneous=t.assertClaimBatchHomogeneous;exports.buildPeginParamsCandidates=t.buildPeginParamsCandidates;exports.computeFundedPrePeginFee=t.computeFundedPrePeginFee;exports.computePeginFingerprint=t.computePeginFingerprint;exports.deriveHashlocksFromPrePegin=t.deriveHashlocksFromPrePegin;exports.describePeginParamsCandidate=t.describePeginParamsCandidate;exports.describeUnresolvedVersion=t.describeUnresolvedVersion;exports.encodePeginFingerprintPreimage=t.encodePeginFingerprintPreimage;exports.isDepositTermsRejectedError=t.isDepositTermsRejectedError;exports.isPeginFingerprintInputError=t.isPeginFingerprintInputError;exports.isWotsMismatchError=t.isWotsMismatchError;exports.orderClaimBatchByHtlcVout=t.orderClaimBatchByHtlcVout;exports.rebuildDepositTermsCore=t.rebuildDepositTermsCore;exports.rebuildDepositTermsForClaim=t.rebuildDepositTermsForClaim;exports.reconstructPeginParams=t.reconstructPeginParams;exports.selectSiblingRegistrations=t.selectSiblingRegistrations;exports.toRefundInputs=t.toRefundInputs;exports.ApplicationEntryPointMismatchError=e.ApplicationEntryPointMismatchError;exports.ArtifactsVaultMismatchError=e.ArtifactsVaultMismatchError;exports.AssertBindingError=e.AssertBindingError;exports.BIP68NotMatureError=e.BIP68NotMatureError;exports.ChallengerSetMismatchError=e.ChallengerSetMismatchError;exports.DELEGATED_CLAIM_TX_GRAPH_VERSION=e.DELEGATED_CLAIM_TX_GRAPH_VERSION;exports.DelegatedClaimSigningIncompleteError=e.DelegatedClaimSigningIncompleteError;exports.GraphFingerprintError=e.GraphFingerprintError;exports.PEGIN_ETH_CONFIRMATIONS=e.PEGIN_ETH_CONFIRMATIONS;exports.ParticipantKeyDriftError=e.ParticipantKeyDriftError;exports.PayoutDestinationError=e.PayoutDestinationError;exports.PayoutInputLeafError=e.PayoutInputLeafError;exports.PeginRegistrationMissingError=e.PeginRegistrationMissingError;exports.PeginRegistrationNotFinalError=e.PeginRegistrationNotFinalError;exports.RECLAIM_MAX_FEE_FRACTION_DENOMINATOR=e.RECLAIM_MAX_FEE_FRACTION_DENOMINATOR;exports.RECLAIM_MAX_FEE_FRACTION_NUMERATOR=e.RECLAIM_MAX_FEE_FRACTION_NUMERATOR;exports.RECLAIM_MAX_FEE_RATE_SATS_VB=e.RECLAIM_MAX_FEE_RATE_SATS_VB;exports.RECLAIM_WARN_FEE_FRACTION_NUMERATOR=e.RECLAIM_WARN_FEE_FRACTION_NUMERATOR;exports.REFUND_MAX_FEE_FRACTION_DENOMINATOR=e.REFUND_MAX_FEE_FRACTION_DENOMINATOR;exports.REFUND_MAX_FEE_FRACTION_NUMERATOR=e.REFUND_MAX_FEE_FRACTION_NUMERATOR;exports.REFUND_MAX_FEE_RATE_SATS_VB=e.REFUND_MAX_FEE_RATE_SATS_VB;exports.REFUND_VSIZE=e.REFUND_VSIZE;exports.ReclaimUneconomicalError=e.ReclaimUneconomicalError;exports.RegisteredVaultVersionMismatchError=e.RegisteredVaultVersionMismatchError;exports.SigningPlanMismatchError=e.SigningPlanMismatchError;exports.VaultIdBindingError=e.VaultIdBindingError;exports.activateVault=e.activateVault;exports.activateVaultAndRedeem=e.activateVaultAndRedeem;exports.assembleWatchtowerArtifacts=e.assembleWatchtowerArtifacts;exports.assembleWatchtowerArtifactsFromSignatures=e.assembleWatchtowerArtifactsFromSignatures;exports.assertArtifactsUsableForVault=e.assertArtifactsUsableForVault;exports.assertAssertBindsClaimAndPayout=e.assertAssertBindsClaimAndPayout;exports.assertChallengerSetMatchesVault=e.assertChallengerSetMatchesVault;exports.assertClaimSpendsVault=e.assertClaimSpendsVault;exports.assertPayoutPaysRegisteredScript=e.assertPayoutPaysRegisteredScript;exports.assertReturnedGraphMatchesFingerprint=e.assertReturnedGraphMatchesFingerprint;exports.assertTermsMatchVault=e.assertTermsMatchVault;exports.assertVaultProviderHintAccepted=e.assertVaultProviderHintAccepted;exports.buildAndBroadcastReclaim=e.buildAndBroadcastReclaim;exports.buildAndBroadcastRefund=e.buildAndBroadcastRefund;exports.claimExpiredVault=e.claimExpiredVault;exports.copyAssertConnectorLeaf=e.copyAssertConnectorLeaf;exports.deriveClaimerWotsKeypair=e.deriveClaimerWotsKeypair;exports.estimateRefundFeeSats=e.estimateRefundFeeSats;exports.fingerprintReturnedGraph=e.fingerprintReturnedGraph;exports.isApplicationEntryPointMismatchError=e.isApplicationEntryPointMismatchError;exports.isDepositAmountValid=e.isDepositAmountValid;exports.isHintAccepted=e.isHintAccepted;exports.isParticipantKeyDriftError=e.isParticipantKeyDriftError;exports.isPeginRegistrationMissingError=e.isPeginRegistrationMissingError;exports.isPeginRegistrationNotFinalError=e.isPeginRegistrationNotFinalError;exports.isRegisteredVaultVersionMismatchError=e.isRegisteredVaultVersionMismatchError;exports.matchKeyHint=e.matchKeyHint;exports.matchKeySetHint=e.matchKeySetHint;exports.planDelegatedClaimSigning=e.planDelegatedClaimSigning;exports.readDelegatedClaimVaultContext=e.readDelegatedClaimVaultContext;exports.readRefundPrePeginContext=e.readRefundPrePeginContext;exports.readStampedParticipantKeys=e.readStampedParticipantKeys;exports.resolveCurrentParticipantKeys=e.resolveCurrentParticipantKeys;exports.resolveParticipantKeysAtEpochs=e.resolveParticipantKeysAtEpochs;exports.runDepositorPresignFlow=e.runDepositorPresignFlow;exports.signDelegatedClaimPlan=e.signDelegatedClaimPlan;exports.signDepositorGraph=e.signDepositorGraph;exports.submitWotsPublicKey=e.submitWotsPublicKey;exports.summarizeWatchtowerArtifacts=e.summarizeWatchtowerArtifacts;exports.validateDepositAmount=e.validateDepositAmount;exports.validateMultiVaultDepositInputs=e.validateMultiVaultDepositInputs;exports.validateOnChainParticipantKeys=e.validateOnChainParticipantKeys;exports.validateProviderSelection=e.validateProviderSelection;exports.validateRemainingCapacity=e.validateRemainingCapacity;exports.validateVaultAmounts=e.validateVaultAmounts;exports.validateVaultProviderPubkey=e.validateVaultProviderPubkey;exports.verifyRegisteredParticipantKeys=e.verifyRegisteredParticipantKeys;exports.verifyRegisteredVaultVersions=e.verifyRegisteredVaultVersions;exports.waitForPeginRegistrationDepth=e.waitForPeginRegistrationDepth;exports.waitForPeginStatus=e.waitForPeginStatus;exports.ContractStatus=p.ContractStatus;exports.PeginAction=p.PeginAction;exports.activationDeadlineBlocksRemaining=p.activationDeadlineBlocksRemaining;exports.canPerformAction=p.canPerformAction;exports.getPeginProtocolState=p.getPeginProtocolState;exports.isActivationDeadlinePassedOnChain=p.isActivationDeadlinePassedOnChain;
2
2
  //# sourceMappingURL=index.cjs.map