@wormhole-labs/cctp-executor-route 0.0.1-beta.10

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 (148) hide show
  1. package/README.md +68 -0
  2. package/dist/cjs/aptos/executor.d.ts +18 -0
  3. package/dist/cjs/aptos/executor.d.ts.map +1 -0
  4. package/dist/cjs/aptos/executor.js +73 -0
  5. package/dist/cjs/aptos/executor.js.map +1 -0
  6. package/dist/cjs/aptos/index.d.ts +2 -0
  7. package/dist/cjs/aptos/index.d.ts.map +1 -0
  8. package/dist/cjs/aptos/index.js +22 -0
  9. package/dist/cjs/aptos/index.js.map +1 -0
  10. package/dist/cjs/consts.d.ts +13 -0
  11. package/dist/cjs/consts.d.ts.map +1 -0
  12. package/dist/cjs/consts.js +94 -0
  13. package/dist/cjs/consts.js.map +1 -0
  14. package/dist/cjs/evm/executor.d.ts +19 -0
  15. package/dist/cjs/evm/executor.d.ts.map +1 -0
  16. package/dist/cjs/evm/executor.js +69 -0
  17. package/dist/cjs/evm/executor.js.map +1 -0
  18. package/dist/cjs/evm/index.d.ts +2 -0
  19. package/dist/cjs/evm/index.d.ts.map +1 -0
  20. package/dist/cjs/evm/index.js +22 -0
  21. package/dist/cjs/evm/index.js.map +1 -0
  22. package/dist/cjs/index.d.ts +96 -0
  23. package/dist/cjs/index.d.ts.map +1 -0
  24. package/dist/cjs/index.js +321 -0
  25. package/dist/cjs/index.js.map +1 -0
  26. package/dist/cjs/layouts/conversions.d.ts +5 -0
  27. package/dist/cjs/layouts/conversions.d.ts.map +1 -0
  28. package/dist/cjs/layouts/conversions.js +8 -0
  29. package/dist/cjs/layouts/conversions.js.map +1 -0
  30. package/dist/cjs/layouts/index.d.ts +4 -0
  31. package/dist/cjs/layouts/index.d.ts.map +1 -0
  32. package/dist/cjs/layouts/index.js +20 -0
  33. package/dist/cjs/layouts/index.js.map +1 -0
  34. package/dist/cjs/layouts/relayInstruction.d.ts +86 -0
  35. package/dist/cjs/layouts/relayInstruction.d.ts.map +1 -0
  36. package/dist/cjs/layouts/relayInstruction.js +32 -0
  37. package/dist/cjs/layouts/relayInstruction.js.map +1 -0
  38. package/dist/cjs/layouts/requestForExecution.d.ts +18 -0
  39. package/dist/cjs/layouts/requestForExecution.d.ts.map +1 -0
  40. package/dist/cjs/layouts/requestForExecution.js +15 -0
  41. package/dist/cjs/layouts/requestForExecution.js.map +1 -0
  42. package/dist/cjs/layouts/signedQuote.d.ts +102 -0
  43. package/dist/cjs/layouts/signedQuote.d.ts.map +1 -0
  44. package/dist/cjs/layouts/signedQuote.js +46 -0
  45. package/dist/cjs/layouts/signedQuote.js.map +1 -0
  46. package/dist/cjs/sui/executor.d.ts +24 -0
  47. package/dist/cjs/sui/executor.d.ts.map +1 -0
  48. package/dist/cjs/sui/executor.js +129 -0
  49. package/dist/cjs/sui/executor.js.map +1 -0
  50. package/dist/cjs/sui/index.d.ts +2 -0
  51. package/dist/cjs/sui/index.d.ts.map +1 -0
  52. package/dist/cjs/sui/index.js +22 -0
  53. package/dist/cjs/sui/index.js.map +1 -0
  54. package/dist/cjs/svm/executor.d.ts +21 -0
  55. package/dist/cjs/svm/executor.d.ts.map +1 -0
  56. package/dist/cjs/svm/executor.js +89 -0
  57. package/dist/cjs/svm/executor.js.map +1 -0
  58. package/dist/cjs/svm/idl/example_cctp_with_executor.d.ts +72 -0
  59. package/dist/cjs/svm/idl/example_cctp_with_executor.d.ts.map +1 -0
  60. package/dist/cjs/svm/idl/example_cctp_with_executor.js +74 -0
  61. package/dist/cjs/svm/idl/example_cctp_with_executor.js.map +1 -0
  62. package/dist/cjs/svm/index.d.ts +2 -0
  63. package/dist/cjs/svm/index.d.ts.map +1 -0
  64. package/dist/cjs/svm/index.js +22 -0
  65. package/dist/cjs/svm/index.js.map +1 -0
  66. package/dist/cjs/types.d.ts +6 -0
  67. package/dist/cjs/types.d.ts.map +1 -0
  68. package/dist/cjs/types.js +3 -0
  69. package/dist/cjs/types.js.map +1 -0
  70. package/dist/cjs/utils.d.ts +64 -0
  71. package/dist/cjs/utils.d.ts.map +1 -0
  72. package/dist/cjs/utils.js +74 -0
  73. package/dist/cjs/utils.js.map +1 -0
  74. package/dist/esm/aptos/executor.d.ts +18 -0
  75. package/dist/esm/aptos/executor.d.ts.map +1 -0
  76. package/dist/esm/aptos/executor.js +69 -0
  77. package/dist/esm/aptos/executor.js.map +1 -0
  78. package/dist/esm/aptos/index.d.ts +2 -0
  79. package/dist/esm/aptos/index.d.ts.map +1 -0
  80. package/dist/esm/aptos/index.js +6 -0
  81. package/dist/esm/aptos/index.js.map +1 -0
  82. package/dist/esm/consts.d.ts +13 -0
  83. package/dist/esm/consts.d.ts.map +1 -0
  84. package/dist/esm/consts.js +91 -0
  85. package/dist/esm/consts.js.map +1 -0
  86. package/dist/esm/evm/executor.d.ts +19 -0
  87. package/dist/esm/evm/executor.d.ts.map +1 -0
  88. package/dist/esm/evm/executor.js +65 -0
  89. package/dist/esm/evm/executor.js.map +1 -0
  90. package/dist/esm/evm/index.d.ts +2 -0
  91. package/dist/esm/evm/index.d.ts.map +1 -0
  92. package/dist/esm/evm/index.js +6 -0
  93. package/dist/esm/evm/index.js.map +1 -0
  94. package/dist/esm/index.d.ts +96 -0
  95. package/dist/esm/index.d.ts.map +1 -0
  96. package/dist/esm/index.js +316 -0
  97. package/dist/esm/index.js.map +1 -0
  98. package/dist/esm/layouts/conversions.d.ts +5 -0
  99. package/dist/esm/layouts/conversions.d.ts.map +1 -0
  100. package/dist/esm/layouts/conversions.js +5 -0
  101. package/dist/esm/layouts/conversions.js.map +1 -0
  102. package/dist/esm/layouts/index.d.ts +4 -0
  103. package/dist/esm/layouts/index.d.ts.map +1 -0
  104. package/dist/esm/layouts/index.js +4 -0
  105. package/dist/esm/layouts/index.js.map +1 -0
  106. package/dist/esm/layouts/relayInstruction.d.ts +86 -0
  107. package/dist/esm/layouts/relayInstruction.d.ts.map +1 -0
  108. package/dist/esm/layouts/relayInstruction.js +29 -0
  109. package/dist/esm/layouts/relayInstruction.js.map +1 -0
  110. package/dist/esm/layouts/requestForExecution.d.ts +18 -0
  111. package/dist/esm/layouts/requestForExecution.d.ts.map +1 -0
  112. package/dist/esm/layouts/requestForExecution.js +12 -0
  113. package/dist/esm/layouts/requestForExecution.js.map +1 -0
  114. package/dist/esm/layouts/signedQuote.d.ts +102 -0
  115. package/dist/esm/layouts/signedQuote.d.ts.map +1 -0
  116. package/dist/esm/layouts/signedQuote.js +43 -0
  117. package/dist/esm/layouts/signedQuote.js.map +1 -0
  118. package/dist/esm/sui/executor.d.ts +24 -0
  119. package/dist/esm/sui/executor.d.ts.map +1 -0
  120. package/dist/esm/sui/executor.js +125 -0
  121. package/dist/esm/sui/executor.js.map +1 -0
  122. package/dist/esm/sui/index.d.ts +2 -0
  123. package/dist/esm/sui/index.d.ts.map +1 -0
  124. package/dist/esm/sui/index.js +6 -0
  125. package/dist/esm/sui/index.js.map +1 -0
  126. package/dist/esm/svm/executor.d.ts +21 -0
  127. package/dist/esm/svm/executor.d.ts.map +1 -0
  128. package/dist/esm/svm/executor.js +85 -0
  129. package/dist/esm/svm/executor.js.map +1 -0
  130. package/dist/esm/svm/idl/example_cctp_with_executor.d.ts +72 -0
  131. package/dist/esm/svm/idl/example_cctp_with_executor.d.ts.map +1 -0
  132. package/dist/esm/svm/idl/example_cctp_with_executor.js +71 -0
  133. package/dist/esm/svm/idl/example_cctp_with_executor.js.map +1 -0
  134. package/dist/esm/svm/index.d.ts +2 -0
  135. package/dist/esm/svm/index.d.ts.map +1 -0
  136. package/dist/esm/svm/index.js +6 -0
  137. package/dist/esm/svm/index.js.map +1 -0
  138. package/dist/esm/types.d.ts +6 -0
  139. package/dist/esm/types.d.ts.map +1 -0
  140. package/dist/esm/types.js +2 -0
  141. package/dist/esm/types.js.map +1 -0
  142. package/dist/esm/utils.d.ts +64 -0
  143. package/dist/esm/utils.d.ts.map +1 -0
  144. package/dist/esm/utils.js +64 -0
  145. package/dist/esm/utils.js.map +1 -0
  146. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  147. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  148. package/package.json +52 -0
@@ -0,0 +1,96 @@
1
+ import type { Chain, Network } from "@wormhole-foundation/sdk-base";
2
+ import { amount } from "@wormhole-foundation/sdk-base";
3
+ import { EmptyPlatformMap, type ChainAddress, type ChainContext, type Signer, type TokenId } from "@wormhole-foundation/sdk-definitions";
4
+ import { routes, Wormhole } from "@wormhole-foundation/sdk-connect";
5
+ import { CCTPW7Executor } from "./types";
6
+ import "./aptos/index.js";
7
+ import "./evm/index.js";
8
+ import "./sui/index.js";
9
+ import "./svm/index.js";
10
+ export declare namespace CCTPW7ExecutorRoute {
11
+ type Options = {
12
+ nativeGas?: number;
13
+ };
14
+ type NormalizedParams = {
15
+ amount: amount.Amount;
16
+ };
17
+ interface ValidatedParams extends routes.ValidatedTransferParams<Options> {
18
+ normalizedParams: NormalizedParams;
19
+ }
20
+ }
21
+ type Op = CCTPW7ExecutorRoute.Options;
22
+ type Vp = CCTPW7ExecutorRoute.ValidatedParams;
23
+ type Tp = routes.TransferParams<Op>;
24
+ type Vr = routes.ValidationResult<Op>;
25
+ export type QuoteDetails = {
26
+ signedQuote: Uint8Array;
27
+ relayInstructions: Uint8Array;
28
+ estimatedCost: bigint;
29
+ referrer: ChainAddress;
30
+ referrerFee: bigint;
31
+ remainingAmount: bigint;
32
+ referrerFeeDbps: bigint;
33
+ };
34
+ type Q = routes.Quote<Op, Vp, QuoteDetails>;
35
+ type QR = routes.QuoteResult<Op, Vp>;
36
+ type AT = {
37
+ id: string;
38
+ attestation: {};
39
+ };
40
+ type R = routes.Receipt<AT>;
41
+ export declare namespace CCTPW7ExecutorRoute {
42
+ type Config = {
43
+ referrerFeeDbps: bigint;
44
+ };
45
+ }
46
+ export declare function cctpW7ExecutorRoute(config: CCTPW7ExecutorRoute.Config): {
47
+ new <N extends Network>(wh: Wormhole<N>): {
48
+ readonly staticConfig: any;
49
+ getDefaultOptions(): Op;
50
+ validate(request: routes.RouteTransferRequest<N>, params: Tp): Promise<Vr>;
51
+ quote(request: routes.RouteTransferRequest<N>, params: Vp): Promise<QR>;
52
+ initiate(request: routes.RouteTransferRequest<N>, signer: Signer, quote: Q, to: ChainAddress): Promise<R>;
53
+ track(receipt: R, timeout?: number): AsyncGenerator<import("@wormhole-foundation/sdk-connect").SourceInitiatedTransferReceipt<"Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").FailedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").SourceFinalizedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").AttestedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").CompletedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia">, R, unknown>;
54
+ wh: Wormhole<N>;
55
+ transferUrl(txid: string): string;
56
+ };
57
+ config: CCTPW7ExecutorRoute.Config;
58
+ NATIVE_GAS_DROPOFF_SUPPORTED: boolean;
59
+ meta: {
60
+ name: string;
61
+ provider: string;
62
+ };
63
+ supportedNetworks(): Network[];
64
+ supportedChains(network: Network): Chain[];
65
+ supportedDestinationTokens<N extends Network>(sourceToken: TokenId, fromChain: ChainContext<N>, toChain: ChainContext<N>): Promise<TokenId[]>;
66
+ IS_AUTOMATIC: boolean;
67
+ };
68
+ export declare class CCTPW7ExecutorRoute<N extends Network> extends routes.AutomaticRoute<N, Op, Vp, R> implements routes.StaticRouteMethods<typeof CCTPW7ExecutorRoute> {
69
+ static NATIVE_GAS_DROPOFF_SUPPORTED: boolean;
70
+ readonly staticConfig: any;
71
+ static config: CCTPW7ExecutorRoute.Config;
72
+ static meta: {
73
+ name: string;
74
+ provider: string;
75
+ };
76
+ static supportedNetworks(): Network[];
77
+ static supportedChains(network: Network): Chain[];
78
+ static supportedDestinationTokens<N extends Network>(sourceToken: TokenId, fromChain: ChainContext<N>, toChain: ChainContext<N>): Promise<TokenId[]>;
79
+ getDefaultOptions(): Op;
80
+ validate(request: routes.RouteTransferRequest<N>, params: Tp): Promise<Vr>;
81
+ quote(request: routes.RouteTransferRequest<N>, params: Vp): Promise<QR>;
82
+ initiate(request: routes.RouteTransferRequest<N>, signer: Signer, quote: Q, to: ChainAddress): Promise<R>;
83
+ track(receipt: R, timeout?: number): AsyncGenerator<import("@wormhole-foundation/sdk-connect").SourceInitiatedTransferReceipt<"Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").FailedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").SourceFinalizedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").AttestedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia"> | import("@wormhole-foundation/sdk-connect").CompletedTransferReceipt<AT, "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia", "Solana" | "Ethereum" | "Terra" | "Bsc" | "Polygon" | "Avalanche" | "Oasis" | "Algorand" | "Aurora" | "Fantom" | "Karura" | "Acala" | "Klaytn" | "Celo" | "Near" | "Moonbeam" | "Neon" | "Terra2" | "Injective" | "Osmosis" | "Sui" | "Aptos" | "Arbitrum" | "Optimism" | "Gnosis" | "Pythnet" | "Xpla" | "Btc" | "Base" | "Sei" | "Scroll" | "Mantle" | "Blast" | "Xlayer" | "Linea" | "Berachain" | "Seievm" | "Snaxchain" | "Unichain" | "Worldchain" | "Ink" | "HyperEVM" | "Monad" | "Mezo" | "Wormchain" | "Cosmoshub" | "Evmos" | "Kujira" | "Neutron" | "Celestia" | "Stargaze" | "Seda" | "Dymension" | "Provenance" | "Noble" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | "Holesky" | "PolygonSepolia">, R, unknown>;
84
+ }
85
+ declare module "@wormhole-foundation/sdk-definitions" {
86
+ namespace WormholeRegistry {
87
+ interface ProtocolToInterfaceMapping<N, C> {
88
+ CCTPW7Executor: CCTPW7Executor<N, C>;
89
+ }
90
+ interface ProtocolToPlatformMapping {
91
+ CCTPW7Executor: EmptyPlatformMap<"CCTPW7Executor">;
92
+ }
93
+ }
94
+ }
95
+ export {};
96
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,316 @@
1
+ import { amount, circle, contracts, deserializeLayout, encoding, finality, serializeLayout, toChainId, } from "@wormhole-foundation/sdk-base";
2
+ import { isSameToken, nativeTokenId, UniversalAddress, } from "@wormhole-foundation/sdk-definitions";
3
+ import { isAttested, isCompleted, isFailed, isSourceFinalized, isSourceInitiated, routes, signSendWait, TransferState, Wormhole, } from "@wormhole-foundation/sdk-connect";
4
+ import { calculateReferrerFee, fetchCapabilities, fetchSignedQuote, fetchStatus as fetchTxStatus, RelayStatus, } from "./utils";
5
+ import { relayInstructionsLayout, signedQuoteLayout } from "./layouts";
6
+ import { gasLimits, referrers, SOLANA_MSG_VALUE_BASE_FEE } from "./consts";
7
+ import { SolanaAddress } from "@wormhole-foundation/sdk-solana";
8
+ // IMPORTANT: register the platform specific implementations of the protocol
9
+ import "./aptos/index.js";
10
+ import "./evm/index.js";
11
+ import "./sui/index.js";
12
+ import "./svm/index.js";
13
+ // The minimum rent exemption amount for a 165 byte account (e.g. an ATA)
14
+ // cache it here to avoid fetching it from the Solana RPC
15
+ let ataMinRentAmount = undefined;
16
+ // Use this function to create a new CCTPW7ExecutorRoute with custom config
17
+ export function cctpW7ExecutorRoute(config) {
18
+ if (config.referrerFeeDbps < 0 || config.referrerFeeDbps > 65535n) {
19
+ throw new Error("Referrer fee must be between 0 and 65535");
20
+ }
21
+ class CCTPW7ExecutorRouteImpl extends CCTPW7ExecutorRoute {
22
+ static config = config;
23
+ }
24
+ return CCTPW7ExecutorRouteImpl;
25
+ }
26
+ export class CCTPW7ExecutorRoute extends routes.AutomaticRoute {
27
+ static NATIVE_GAS_DROPOFF_SUPPORTED = true;
28
+ // @ts-ignore
29
+ // Since we set the config on the static class, access it with this param
30
+ // the CCTPW7ExecutorRoute.config will always be empty
31
+ staticConfig = this.constructor.config;
32
+ static config = { referrerFeeDbps: 0n };
33
+ static meta = {
34
+ name: "CCTPW7ExecutorRoute",
35
+ provider: "W7 Executor",
36
+ };
37
+ static supportedNetworks() {
38
+ return ["Mainnet", "Testnet"];
39
+ }
40
+ static supportedChains(network) {
41
+ if (contracts.circleContractChains.has(network)) {
42
+ return contracts.circleContractChains.get(network);
43
+ }
44
+ return [];
45
+ }
46
+ static async supportedDestinationTokens(sourceToken, fromChain, toChain) {
47
+ // Ensure the source token is USDC
48
+ const sourceChainUsdcContract = circle.usdcContract.get(fromChain.network, fromChain.chain);
49
+ if (!(sourceChainUsdcContract &&
50
+ isSameToken(sourceToken, Wormhole.tokenId(fromChain.chain, sourceChainUsdcContract)))) {
51
+ return [];
52
+ }
53
+ const { network, chain } = toChain;
54
+ if (!circle.usdcContract.has(network, chain))
55
+ return [];
56
+ return [
57
+ Wormhole.chainAddress(chain, circle.usdcContract.get(network, chain)),
58
+ ];
59
+ }
60
+ getDefaultOptions() {
61
+ return {
62
+ nativeGas: 0,
63
+ };
64
+ }
65
+ async validate(request, params) {
66
+ if (params.options?.nativeGas &&
67
+ (params.options.nativeGas < 0 || params.options.nativeGas > 1)) {
68
+ return {
69
+ valid: false,
70
+ error: new Error("Invalid native gas percentage"),
71
+ params,
72
+ };
73
+ }
74
+ const validatedParams = {
75
+ normalizedParams: {
76
+ amount: request.parseAmount(params.amount),
77
+ },
78
+ options: params.options ?? this.getDefaultOptions(),
79
+ ...params,
80
+ };
81
+ return { valid: true, params: validatedParams };
82
+ }
83
+ async quote(request, params) {
84
+ const { fromChain, toChain } = request;
85
+ const srcUsdcAddress = circle.usdcContract.get(fromChain.network, fromChain.chain);
86
+ if (!srcUsdcAddress) {
87
+ throw new Error("Invalid transfer, no USDC contract on source");
88
+ }
89
+ const dstUsdcAddress = circle.usdcContract.get(toChain.network, toChain.chain);
90
+ if (!dstUsdcAddress) {
91
+ throw new Error("Invalid transfer, no USDC contract on destination");
92
+ }
93
+ const referrerAddress = referrers[fromChain.network]?.[fromChain.chain];
94
+ if (!referrerAddress) {
95
+ return {
96
+ success: false,
97
+ error: new Error("No referrer address found"),
98
+ };
99
+ }
100
+ const referrer = Wormhole.chainAddress(fromChain.chain, referrerAddress);
101
+ const referrerFeeDbps = this.staticConfig.referrerFeeDbps;
102
+ const { referrerFee, remainingAmount } = calculateReferrerFee(amount.units(params.normalizedParams.amount), this.staticConfig.referrerFeeDbps);
103
+ if (remainingAmount <= 0n) {
104
+ return {
105
+ success: false,
106
+ error: new Error("Amount after fee <= 0"),
107
+ };
108
+ }
109
+ const gasLimit = gasLimits[fromChain.network]?.[toChain.chain];
110
+ if (!gasLimit) {
111
+ return {
112
+ success: false,
113
+ error: new Error("Gas limit not found"),
114
+ };
115
+ }
116
+ const capabilities = await fetchCapabilities(fromChain.network);
117
+ const srcCapabilities = capabilities[toChainId(fromChain.chain)];
118
+ if (!srcCapabilities) {
119
+ return {
120
+ success: false,
121
+ error: new Error("Unsupported source chain"),
122
+ };
123
+ }
124
+ const dstCapabilities = capabilities[toChainId(toChain.chain)];
125
+ if (!dstCapabilities || !dstCapabilities.requestPrefixes.includes("ERC1")) {
126
+ return {
127
+ success: false,
128
+ error: new Error("Unsupported destination chain"),
129
+ };
130
+ }
131
+ const { recipient } = request;
132
+ let tokenAccountExists = true;
133
+ // Check if the associated token account (ATA) exists on Solana.
134
+ // If it doesn't, include a gas drop-off instruction so the relayer can create it.
135
+ // Note: There's a potential race condition — the account might exist during this check,
136
+ // but could be closed before the transfer completes.
137
+ if (recipient && toChain.chain === "Solana") {
138
+ const usdcAddress = Wormhole.parseAddress("Solana", dstUsdcAddress);
139
+ const ata = await toChain.getTokenAccount(recipient.address, usdcAddress);
140
+ const connection = await toChain.getRpc();
141
+ const ataAccount = await connection.getAccountInfo(new SolanaAddress(ata.address).unwrap());
142
+ tokenAccountExists = ataAccount !== null;
143
+ if (!tokenAccountExists && !ataMinRentAmount) {
144
+ ataMinRentAmount = BigInt(await connection.getMinimumBalanceForRentExemption(165));
145
+ }
146
+ }
147
+ let msgValue = 0n;
148
+ if (toChain.chain === "Solana") {
149
+ msgValue += SOLANA_MSG_VALUE_BASE_FEE;
150
+ if (!tokenAccountExists && ataMinRentAmount) {
151
+ msgValue += ataMinRentAmount;
152
+ }
153
+ }
154
+ const relayRequests = [];
155
+ // Add the gas instruction
156
+ relayRequests.push({
157
+ request: {
158
+ type: "GasInstruction",
159
+ gasLimit,
160
+ msgValue,
161
+ },
162
+ });
163
+ // Calculate the gas dropOff value
164
+ const gasDropOffLimit = BigInt(dstCapabilities.gasDropOffLimit);
165
+ const dropOff = params.options.nativeGas && gasDropOffLimit > 0n
166
+ ? (BigInt(Math.round(params.options.nativeGas * 100)) *
167
+ gasDropOffLimit) /
168
+ 100n
169
+ : 0n;
170
+ // Add the gas drop-off instruction if applicable
171
+ if (dropOff > 0n || !tokenAccountExists) {
172
+ relayRequests.push({
173
+ request: {
174
+ type: "GasDropOffInstruction",
175
+ dropOff,
176
+ // If the recipient is undefined (e.g. the user hasn’t connected their wallet yet),
177
+ // we temporarily use a dummy address to fetch a quote.
178
+ // The recipient address is validated later in the `initiate` method, which will throw if it's still missing.
179
+ recipient: recipient
180
+ ? recipient.address.toUniversalAddress()
181
+ : new UniversalAddress(new Uint8Array(32)),
182
+ },
183
+ });
184
+ }
185
+ const relayInstructions = serializeLayout(relayInstructionsLayout, {
186
+ requests: relayRequests,
187
+ });
188
+ const quote = await fetchSignedQuote(fromChain.network, fromChain.chain, toChain.chain, encoding.hex.encode(relayInstructions, true));
189
+ if (!quote.estimatedCost) {
190
+ return {
191
+ success: false,
192
+ error: new Error("No estimated cost"),
193
+ };
194
+ }
195
+ const signedQuoteBytes = encoding.hex.decode(quote.signedQuote);
196
+ const signedQuote = deserializeLayout(signedQuoteLayout, signedQuoteBytes);
197
+ // https://developers.circle.com/stablecoins/docs/required-block-confirmations
198
+ const eta = fromChain.chain === "Polygon"
199
+ ? 2_000 * 200
200
+ : finality.estimateFinalityTime(fromChain.chain) + 1_000; // buffer for the relayer
201
+ const estimatedCost = BigInt(quote.estimatedCost);
202
+ const details = {
203
+ signedQuote: signedQuoteBytes,
204
+ relayInstructions: relayInstructions,
205
+ estimatedCost,
206
+ referrer,
207
+ referrerFee,
208
+ remainingAmount,
209
+ referrerFeeDbps,
210
+ };
211
+ const [srcNativeDecimals, dstNativeDecimals] = await Promise.all([
212
+ fromChain.getDecimals("native"),
213
+ toChain.getDecimals("native"),
214
+ ]);
215
+ return {
216
+ success: true,
217
+ params,
218
+ sourceToken: {
219
+ token: request.source.id,
220
+ amount: params.normalizedParams.amount,
221
+ },
222
+ destinationToken: {
223
+ token: request.destination.id,
224
+ amount: amount.fromBaseUnits(remainingAmount, request.destination.decimals),
225
+ },
226
+ relayFee: {
227
+ token: nativeTokenId(fromChain.chain),
228
+ amount: amount.fromBaseUnits(estimatedCost, srcNativeDecimals),
229
+ },
230
+ destinationNativeGas: amount.fromBaseUnits(dropOff, dstNativeDecimals),
231
+ eta,
232
+ expires: signedQuote.quote.expiryTime,
233
+ details,
234
+ };
235
+ }
236
+ async initiate(request, signer, quote, to) {
237
+ if (!quote.details) {
238
+ throw new Error("Missing quote details");
239
+ }
240
+ const relayInstructions = deserializeLayout(relayInstructionsLayout, quote.details.relayInstructions);
241
+ // Make sure that the gas drop-off recipient matches the actual recipient
242
+ relayInstructions.requests.forEach(({ request }) => {
243
+ if (request.type === "GasDropOffInstruction" &&
244
+ !request.recipient.equals(to.address.toUniversalAddress())) {
245
+ throw new Error("Gas drop-off recipient does not match");
246
+ }
247
+ });
248
+ const executor = await request.fromChain.getProtocol("CCTPW7Executor");
249
+ const sender = Wormhole.parseAddress(signer.chain(), signer.address());
250
+ // When transferring to Solana, the recipient address is the ATA for CCTP transfers
251
+ let cctpRecipient = to;
252
+ if (to.chain === "Solana") {
253
+ const usdcAddress = Wormhole.parseAddress("Solana", circle.usdcContract.get(request.toChain.network, request.toChain.chain));
254
+ cctpRecipient = await request.toChain.getTokenAccount(to.address, usdcAddress);
255
+ }
256
+ const xfer = await executor.transfer(sender, cctpRecipient, quote.details);
257
+ const txids = await signSendWait(request.fromChain, xfer, signer);
258
+ return {
259
+ from: request.fromChain.chain,
260
+ to: request.toChain.chain,
261
+ state: TransferState.SourceInitiated,
262
+ originTxs: txids,
263
+ };
264
+ }
265
+ async *track(receipt, timeout) {
266
+ if (isCompleted(receipt) || isFailed(receipt))
267
+ return receipt;
268
+ let leftover = timeout ? timeout : 60 * 60 * 1000;
269
+ while (leftover > 0) {
270
+ const start = Date.now();
271
+ if (isSourceInitiated(receipt) ||
272
+ isSourceFinalized(receipt) ||
273
+ isAttested(receipt)) {
274
+ try {
275
+ const [txStatus] = await fetchTxStatus(this.wh.network, receipt.originTxs.at(-1).txid, receipt.from);
276
+ if (!txStatus) {
277
+ throw new Error("No transaction status found");
278
+ }
279
+ const relayStatus = txStatus?.status;
280
+ if (relayStatus === RelayStatus.Failed || // this could happen if simulation fails
281
+ relayStatus === RelayStatus.Underpaid || // only happens if you don't pay at least the costEstimate
282
+ relayStatus === RelayStatus.Unsupported || // capabilities check didn't pass
283
+ relayStatus === RelayStatus.Aborted // An unrecoverable error indicating the attempt should stop (bad data, pre-flight checks failed, or chain-specific conditions)
284
+ ) {
285
+ receipt = {
286
+ ...receipt,
287
+ state: TransferState.Failed,
288
+ error: new routes.RelayFailedError(`Relay failed with status: ${relayStatus}`),
289
+ };
290
+ }
291
+ if (relayStatus === RelayStatus.Submitted) {
292
+ receipt = {
293
+ ...receipt,
294
+ state: TransferState.DestinationFinalized,
295
+ attestation: { id: txStatus.id, attestation: {} },
296
+ };
297
+ }
298
+ // Important to yield before checking for completion
299
+ // so the caller can update the receipt state
300
+ yield receipt;
301
+ if (isCompleted(receipt) || isFailed(receipt)) {
302
+ return receipt;
303
+ }
304
+ }
305
+ catch (error) {
306
+ console.error(`Error fetching transaction status: ${error.message || error}`);
307
+ }
308
+ }
309
+ // Sleep so we don't spam the endpoint
310
+ await new Promise((resolve) => setTimeout(resolve, 3000));
311
+ leftover -= Date.now() - start;
312
+ }
313
+ return receipt;
314
+ }
315
+ }
316
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const dateConversion: {
2
+ readonly to: (encoded: bigint) => Date;
3
+ readonly from: (decoded: Date) => bigint;
4
+ };
5
+ //# sourceMappingURL=conversions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversions.d.ts","sourceRoot":"","sources":["../../../src/layouts/conversions.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc;2BACX,MAAM;6BACJ,IAAI;CAC6B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export const dateConversion = {
2
+ to: (encoded) => new Date(Number(encoded * 1000n)),
3
+ from: (decoded) => BigInt(decoded.getTime()) / 1000n,
4
+ };
5
+ //# sourceMappingURL=conversions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversions.js","sourceRoot":"","sources":["../../../src/layouts/conversions.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,EAAE,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;IAC1D,IAAI,EAAE,CAAC,OAAa,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;CACT,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./relayInstruction.js";
2
+ export * from "./requestForExecution.js";
3
+ export * from "./signedQuote.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./relayInstruction.js";
2
+ export * from "./requestForExecution.js";
3
+ export * from "./signedQuote.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/layouts/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { DeriveType } from "binary-layout";
2
+ export declare const gasInstructionLayout: readonly [{
3
+ readonly name: "gasLimit";
4
+ readonly binary: "uint";
5
+ readonly size: 16;
6
+ }, {
7
+ readonly name: "msgValue";
8
+ readonly binary: "uint";
9
+ readonly size: 16;
10
+ }];
11
+ export type GasInstruction = DeriveType<typeof gasInstructionLayout>;
12
+ export declare const gasDropOffInstructionLayout: readonly [{
13
+ readonly name: "dropOff";
14
+ readonly binary: "uint";
15
+ readonly size: 16;
16
+ }, {
17
+ readonly binary: "bytes";
18
+ readonly size: 32;
19
+ readonly custom: {
20
+ to: (val: Uint8Array) => import("@wormhole-foundation/sdk-connect").UniversalAddress;
21
+ from: (val: import("@wormhole-foundation/sdk-connect").UniversalAddress) => Uint8Array;
22
+ };
23
+ readonly name: "recipient";
24
+ }];
25
+ export type GasDropOffInstruction = DeriveType<typeof gasDropOffInstructionLayout>;
26
+ export declare const relayInstructionLayout: readonly [{
27
+ readonly name: "request";
28
+ readonly binary: "switch";
29
+ readonly idSize: 1;
30
+ readonly idTag: "type";
31
+ readonly layouts: readonly [readonly [readonly [1, "GasInstruction"], readonly [{
32
+ readonly name: "gasLimit";
33
+ readonly binary: "uint";
34
+ readonly size: 16;
35
+ }, {
36
+ readonly name: "msgValue";
37
+ readonly binary: "uint";
38
+ readonly size: 16;
39
+ }]], readonly [readonly [2, "GasDropOffInstruction"], readonly [{
40
+ readonly name: "dropOff";
41
+ readonly binary: "uint";
42
+ readonly size: 16;
43
+ }, {
44
+ readonly binary: "bytes";
45
+ readonly size: 32;
46
+ readonly custom: {
47
+ to: (val: Uint8Array) => import("@wormhole-foundation/sdk-connect").UniversalAddress;
48
+ from: (val: import("@wormhole-foundation/sdk-connect").UniversalAddress) => Uint8Array;
49
+ };
50
+ readonly name: "recipient";
51
+ }]]];
52
+ }];
53
+ export type RelayInstruction = DeriveType<typeof relayInstructionLayout>;
54
+ export declare const relayInstructionsLayout: readonly [{
55
+ readonly name: "requests";
56
+ readonly binary: "array";
57
+ readonly layout: readonly [{
58
+ readonly name: "request";
59
+ readonly binary: "switch";
60
+ readonly idSize: 1;
61
+ readonly idTag: "type";
62
+ readonly layouts: readonly [readonly [readonly [1, "GasInstruction"], readonly [{
63
+ readonly name: "gasLimit";
64
+ readonly binary: "uint";
65
+ readonly size: 16;
66
+ }, {
67
+ readonly name: "msgValue";
68
+ readonly binary: "uint";
69
+ readonly size: 16;
70
+ }]], readonly [readonly [2, "GasDropOffInstruction"], readonly [{
71
+ readonly name: "dropOff";
72
+ readonly binary: "uint";
73
+ readonly size: 16;
74
+ }, {
75
+ readonly binary: "bytes";
76
+ readonly size: 32;
77
+ readonly custom: {
78
+ to: (val: Uint8Array) => import("@wormhole-foundation/sdk-connect").UniversalAddress;
79
+ from: (val: import("@wormhole-foundation/sdk-connect").UniversalAddress) => Uint8Array;
80
+ };
81
+ readonly name: "recipient";
82
+ }]]];
83
+ }];
84
+ }];
85
+ export type RelayInstructions = DeriveType<typeof relayInstructionsLayout>;
86
+ //# sourceMappingURL=relayInstruction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relayInstruction.d.ts","sourceRoot":"","sources":["../../../src/layouts/relayInstruction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAU,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,oBAAoB;;;;;;;;EAGN,CAAC;AAE5B,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAErE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;EAGb,CAAC;AAE5B,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAC5C,OAAO,2BAA2B,CACnC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;EAWR,CAAC;AAE5B,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEzE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMT,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC"}