@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 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/svm/index.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ const sdk_definitions_1 = require("@wormhole-foundation/sdk-definitions");
18
+ const sdk_solana_1 = require("@wormhole-foundation/sdk-solana");
19
+ const executor_1 = require("./executor");
20
+ __exportStar(require("./executor"), exports);
21
+ (0, sdk_definitions_1.registerProtocol)(sdk_solana_1._platform, "CCTPW7Executor", executor_1.SvmCCTPW7Executor);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/svm/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0EAAwE;AACxE,gEAA4D;AAC5D,yCAA+C;AAE/C,6CAA2B;AAE3B,IAAA,kCAAgB,EAAC,sBAAS,EAAE,gBAAgB,EAAE,4BAAiB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Chain, AccountAddress, ChainAddress, UnsignedTransaction, Network } from "@wormhole-foundation/sdk-connect";
2
+ import { QuoteDetails } from ".";
3
+ export interface CCTPW7Executor<N extends Network = Network, C extends Chain = Chain> {
4
+ transfer(sender: AccountAddress<C>, recipient: ChainAddress, details: QuoteDetails): AsyncGenerator<UnsignedTransaction<N, C>>;
5
+ }
6
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACR,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AAEjC,MAAM,WAAW,cAAc,CAC7B,CAAC,SAAS,OAAO,GAAG,OAAO,EAC3B,CAAC,SAAS,KAAK,GAAG,KAAK;IAEvB,QAAQ,CACN,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,64 @@
1
+ import { Chain, Network } from "@wormhole-foundation/sdk-base";
2
+ import { RequestPrefix, SignedQuote } from "./layouts";
3
+ export declare enum RelayStatus {
4
+ Pending = "pending",
5
+ Failed = "failed",
6
+ Unsupported = "unsupported",
7
+ Submitted = "submitted",
8
+ Underpaid = "underpaid",
9
+ Aborted = "aborted"
10
+ }
11
+ export type RequestForExecution = {
12
+ quoterAddress: `0x${string}`;
13
+ amtPaid: string;
14
+ dstChain: number;
15
+ dstAddr: `0x${string}`;
16
+ refundAddr: `0x${string}`;
17
+ signedQuoteBytes: `0x${string}`;
18
+ requestBytes: `0x${string}`;
19
+ relayInstructionsBytes: `0x${string}`;
20
+ timestamp: Date;
21
+ };
22
+ export type TxInfo = {
23
+ txHash: string;
24
+ chainId: number;
25
+ blockNumber: string;
26
+ blockTime: Date | null;
27
+ cost: string;
28
+ };
29
+ export type RelayData = {
30
+ id: `0x${string}`;
31
+ txHash: string;
32
+ chainId: number;
33
+ status: string;
34
+ estimatedCost: string;
35
+ requestForExecution: RequestForExecution;
36
+ instruction?: Request;
37
+ txs?: TxInfo[];
38
+ indexed_at: Date;
39
+ };
40
+ export type Capabilities = {
41
+ requestPrefixes: Array<keyof typeof RequestPrefix>;
42
+ gasDropOffLimit: string;
43
+ maxGasLimit: string;
44
+ maxMsgValue: string;
45
+ };
46
+ export interface CapabilitiesResponse {
47
+ [chainId: string]: Capabilities;
48
+ }
49
+ export declare function fetchCapabilities(network: Network): Promise<CapabilitiesResponse>;
50
+ export interface QuoteResponse {
51
+ signedQuote: `0x${string}`;
52
+ estimatedCost?: string;
53
+ }
54
+ export declare function fetchSignedQuote(network: Network, srcChain: Chain, dstChain: Chain, relayInstructions: string): Promise<QuoteResponse>;
55
+ export interface StatusResponse extends RelayData {
56
+ signedQuote: SignedQuote;
57
+ estimatedCost: string;
58
+ }
59
+ export declare function fetchStatus(network: Network, txHash: string, chain: Chain): Promise<StatusResponse[]>;
60
+ export declare function calculateReferrerFee(amount: bigint, dBps: bigint): {
61
+ referrerFee: bigint;
62
+ remainingAmount: bigint;
63
+ };
64
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAa,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIvD,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,KAAK,MAAM,EAAE,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,KAAK,MAAM,EAAE,CAAC;IAChC,YAAY,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,sBAAsB,EAAE,KAAK,MAAM,EAAE,CAAC;IACtC,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,eAAe,EAAE,KAAK,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;CACjC;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,oBAAoB,CAAC,CAS/B;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,EACf,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,aAAa,CAAC,CAaxB;AAED,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB;AAGD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,cAAc,EAAE,CAAC,CAY3B;AAGD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAUlD"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RelayStatus = void 0;
7
+ exports.fetchCapabilities = fetchCapabilities;
8
+ exports.fetchSignedQuote = fetchSignedQuote;
9
+ exports.fetchStatus = fetchStatus;
10
+ exports.calculateReferrerFee = calculateReferrerFee;
11
+ const sdk_base_1 = require("@wormhole-foundation/sdk-base");
12
+ const axios_1 = __importDefault(require("axios"));
13
+ const consts_1 = require("./consts");
14
+ var RelayStatus;
15
+ (function (RelayStatus) {
16
+ RelayStatus["Pending"] = "pending";
17
+ RelayStatus["Failed"] = "failed";
18
+ RelayStatus["Unsupported"] = "unsupported";
19
+ RelayStatus["Submitted"] = "submitted";
20
+ RelayStatus["Underpaid"] = "underpaid";
21
+ RelayStatus["Aborted"] = "aborted";
22
+ })(RelayStatus || (exports.RelayStatus = RelayStatus = {}));
23
+ async function fetchCapabilities(network) {
24
+ const url = `${consts_1.apiBaseUrl[network]}/v0/capabilities`;
25
+ try {
26
+ const response = await axios_1.default.get(url);
27
+ return response.data;
28
+ }
29
+ catch (error) {
30
+ throw new Error(`Failed to fetch capabilities for network: ${network}.`);
31
+ }
32
+ }
33
+ async function fetchSignedQuote(network, srcChain, dstChain, relayInstructions // TODO: `0x:${string}`
34
+ ) {
35
+ const url = `${consts_1.apiBaseUrl[network]}/v0/quote`;
36
+ try {
37
+ const response = await axios_1.default.post(url, {
38
+ srcChain: (0, sdk_base_1.toChainId)(srcChain),
39
+ dstChain: (0, sdk_base_1.toChainId)(dstChain),
40
+ relayInstructions,
41
+ });
42
+ return response.data;
43
+ }
44
+ catch (error) {
45
+ throw new Error(`Failed to fetch signed quote.`);
46
+ }
47
+ }
48
+ // Fetch Status
49
+ async function fetchStatus(network, txHash, chain) {
50
+ const url = `${consts_1.apiBaseUrl[network]}/v0/status/tx`;
51
+ try {
52
+ const response = await axios_1.default.post(url, {
53
+ txHash,
54
+ chainId: (0, sdk_base_1.toChainId)(chain),
55
+ });
56
+ return response.data;
57
+ }
58
+ catch (error) {
59
+ throw new Error(`Failed to fetch status for txHash: ${txHash}.`);
60
+ }
61
+ }
62
+ const MAX_U16 = 65535n;
63
+ function calculateReferrerFee(amount, dBps) {
64
+ if (dBps > MAX_U16) {
65
+ throw new Error("dBps exceeds max u16");
66
+ }
67
+ if (dBps > 0) {
68
+ const referrerFee = (amount * dBps) / 100000n;
69
+ const remainingAmount = amount - referrerFee;
70
+ return { referrerFee, remainingAmount };
71
+ }
72
+ return { referrerFee: 0n, remainingAmount: amount };
73
+ }
74
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;;;;AAyDA,8CAWC;AAOD,4CAkBC;AAQD,kCAgBC;AAGD,oDAaC;AArID,4DAA0E;AAE1E,kDAA0B;AAC1B,qCAAsC;AAEtC,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,0CAA2B,CAAA;IAC3B,sCAAuB,CAAA;IACvB,sCAAuB,CAAA;IACvB,kCAAmB,CAAA;AACrB,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB;AA6CM,KAAK,UAAU,iBAAiB,CACrC,OAAgB;IAEhB,MAAM,GAAG,GAAG,GAAG,mBAAU,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAuB,GAAG,CAAC,CAAC;QAC5D,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,6CAA6C,OAAO,GAAG,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAOM,KAAK,UAAU,gBAAgB,CACpC,OAAgB,EAChB,QAAe,EACf,QAAe,EACf,iBAAyB,CAAC,uBAAuB;;IAEjD,MAAM,GAAG,GAAG,GAAG,mBAAU,CAAC,OAAO,CAAC,WAAW,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAgB,GAAG,EAAE;YACpD,QAAQ,EAAE,IAAA,oBAAS,EAAC,QAAQ,CAAC;YAC7B,QAAQ,EAAE,IAAA,oBAAS,EAAC,QAAQ,CAAC;YAC7B,iBAAiB;SAClB,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAOD,eAAe;AACR,KAAK,UAAU,WAAW,CAC/B,OAAgB,EAChB,MAAc,EACd,KAAY;IAEZ,MAAM,GAAG,GAAG,GAAG,mBAAU,CAAC,OAAO,CAAC,eAAe,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAmB,GAAG,EAAE;YACvD,MAAM;YACN,OAAO,EAAE,IAAA,oBAAS,EAAC,KAAK,CAAC;SAC1B,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,GAAG,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,MAAO,CAAC;AACxB,SAAgB,oBAAoB,CAClC,MAAc,EACd,IAAY;IAEZ,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,OAAQ,CAAC;QAC/C,MAAM,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC;QAC7C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;AACtD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { Aptos } from "@aptos-labs/ts-sdk";
2
+ import { type AccountAddress, type ChainAddress, type ChainsConfig, type Contracts, type Network, type Platform } from "@wormhole-foundation/sdk-connect";
3
+ import { AptosChains, AptosUnsignedTransaction } from "@wormhole-foundation/sdk-aptos";
4
+ import { CCTPW7Executor } from "../types";
5
+ import { QuoteDetails } from "..";
6
+ export declare class AptosCCTPW7Executor<N extends Network, C extends AptosChains> implements CCTPW7Executor<N, C> {
7
+ readonly network: N;
8
+ readonly chain: C;
9
+ readonly provider: Aptos;
10
+ readonly contracts: Contracts;
11
+ readonly usdcId: string;
12
+ readonly shimContract: string;
13
+ constructor(network: N, chain: C, provider: Aptos, contracts: Contracts);
14
+ static fromRpc<N extends Network>(provider: Aptos, config: ChainsConfig<N, Platform>): Promise<AptosCCTPW7Executor<N, AptosChains>>;
15
+ transfer(sender: AccountAddress<C>, recipient: ChainAddress, details: QuoteDetails): AsyncGenerator<AptosUnsignedTransaction<N, C>>;
16
+ private createUnsignedTx;
17
+ }
18
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/aptos/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EAIN,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,WAAW,EAEX,wBAAwB,EACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,qBAAa,mBAAmB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,WAAW,CACvE,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAM7B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,KAAK;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS;IAP/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGnB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,SAAS;WAkBlB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,KAAK,EACf,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,mBAAmB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAgBxC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAwCjD,OAAO,CAAC,gBAAgB;CAazB"}
@@ -0,0 +1,69 @@
1
+ import { AccountAddress as AptosAccountAddress, } from "@aptos-labs/ts-sdk";
2
+ import { circle, toChainId, } from "@wormhole-foundation/sdk-connect";
3
+ import { AptosAddress, AptosPlatform, AptosUnsignedTransaction, } from "@wormhole-foundation/sdk-aptos";
4
+ import { shimContracts } from "../consts";
5
+ export class AptosCCTPW7Executor {
6
+ network;
7
+ chain;
8
+ provider;
9
+ contracts;
10
+ usdcId;
11
+ shimContract;
12
+ constructor(network, chain, provider, contracts) {
13
+ this.network = network;
14
+ this.chain = chain;
15
+ this.provider = provider;
16
+ this.contracts = contracts;
17
+ if (network === "Devnet")
18
+ throw new Error("CCTPW7Executor not supported on Devnet");
19
+ const usdcId = circle.usdcContract.get(this.network, this.chain);
20
+ if (!usdcId) {
21
+ throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);
22
+ }
23
+ this.usdcId = usdcId;
24
+ const shimContract = shimContracts[network]?.[chain];
25
+ if (!shimContract)
26
+ throw new Error(`Shim contract for ${chain} not found`);
27
+ this.shimContract = shimContract;
28
+ }
29
+ static async fromRpc(provider, config) {
30
+ const [network, chain] = await AptosPlatform.chainFromRpc(provider);
31
+ const conf = config[chain];
32
+ if (!conf)
33
+ throw new Error(`No config found for ${chain}`);
34
+ if (conf.network !== network)
35
+ throw new Error(`Network mismatch: ${conf.network} != ${network}`);
36
+ return new AptosCCTPW7Executor(network, chain, provider, conf.contracts);
37
+ }
38
+ async *transfer(sender, recipient, details) {
39
+ const senderAddress = new AptosAddress(sender).unwrap();
40
+ const mintRecipient = AptosAccountAddress.from(recipient.address.toUniversalAddress().toUint8Array());
41
+ const burnToken = AptosAccountAddress.from(this.usdcId);
42
+ const amount = details.remainingAmount + details.referrerFee;
43
+ const destinationDomain = circle.circleChainId.get(this.network, recipient.chain);
44
+ const refundAddr = senderAddress;
45
+ const payee = senderAddress;
46
+ const functionArguments = [
47
+ amount,
48
+ destinationDomain,
49
+ mintRecipient.toString(),
50
+ burnToken.toString(),
51
+ details.estimatedCost,
52
+ toChainId(recipient.chain),
53
+ refundAddr,
54
+ details.signedQuote,
55
+ details.relayInstructions,
56
+ details.referrerFeeDbps,
57
+ payee,
58
+ ];
59
+ const tx = {
60
+ function: `${this.shimContract}::cctp_v1_with_executor::deposit_for_burn_entry`,
61
+ functionArguments,
62
+ };
63
+ yield this.createUnsignedTx(tx, "AtposCCTPW7Executor.Transfer");
64
+ }
65
+ createUnsignedTx(txReq, description, parallelizable = false) {
66
+ return new AptosUnsignedTransaction(txReq, this.network, this.chain, description, parallelizable);
67
+ }
68
+ }
69
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/aptos/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./executor";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/aptos/index.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { registerProtocol } from "@wormhole-foundation/sdk-definitions";
2
+ import { _platform } from "@wormhole-foundation/sdk-aptos";
3
+ import { AptosCCTPW7Executor } from "./executor";
4
+ export * from "./executor";
5
+ registerProtocol(_platform, "CCTPW7Executor", AptosCCTPW7Executor);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/aptos/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,cAAc,YAAY,CAAC;AAE3B,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Chain, Network } from "@wormhole-foundation/sdk-connect";
2
+ export declare const apiBaseUrl: Partial<Record<Network, string>>;
3
+ export declare const shimContracts: Partial<Record<Network, Partial<Record<Chain, string>>>>;
4
+ export type SuiExecutorIds = {
5
+ executorId: string;
6
+ executorRequestsId: string;
7
+ };
8
+ export declare const suiExecutorIds: Partial<Record<Network, SuiExecutorIds>>;
9
+ export declare const solanaExecutorId: Partial<Record<Network, string>>;
10
+ export declare const SOLANA_MSG_VALUE_BASE_FEE = 5001n;
11
+ export declare const gasLimits: Partial<Record<Network, Partial<Record<Chain, bigint>>>>;
12
+ export declare const referrers: Partial<Record<Network, Partial<Record<Chain, string>>>>;
13
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAElE,eAAO,MAAM,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAGvD,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,OAAO,CACjC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAoBhD,CAAC;AAGF,MAAM,MAAM,cAAc,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,CAAC;AAChF,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAWnE,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAG7D,CAAC;AAGF,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAKhD,eAAO,MAAM,SAAS,EAAE,OAAO,CAC7B,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAsBhD,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,OAAO,CAC7B,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAsBhD,CAAC"}
@@ -0,0 +1,91 @@
1
+ export const apiBaseUrl = {
2
+ Testnet: "https://executor-testnet.labsapis.com",
3
+ Mainnet: "https://executor.labsapis.com",
4
+ };
5
+ // Shim Contract Addresses (e.g. CCTPv1WithExecutor.sol)
6
+ export const shimContracts = {
7
+ Testnet: {
8
+ Aptos: "0x14a12d1fd6ef371b70c2113155534ec152ec7f779e281b54866c796c9a4a58d3",
9
+ Avalanche: "0x2cfEC91B50f657Cc86Ec693542527ac3e03bF742",
10
+ BaseSepolia: "0x4983C6bD3bB7DA9EECe71cfa7AE4C67CAbf362F0",
11
+ Sepolia: "0x0F78904c750801391EbBf308181e9d6fc892B0f3",
12
+ Solana: "CXGRA5SCc8jxDbaQPZrmmZNu2JV34DP7gFW4m31uC1zs",
13
+ },
14
+ Mainnet: {
15
+ Aptos: "0x9f5ad7d5c2d067ca4abb6d8d6aba44c15596b71a1def8eb4596089b527bb2eb1",
16
+ Arbitrum: "0x55Dd4466BFec29527C54A72fd306efb54e5F7027",
17
+ Avalanche: "0xd331819478b74d8a7B8EA631118B4a4e50F6EbD1",
18
+ Base: "0x08FEB1838C3d7F8509DA1EBb9a11a94c1f006cb2",
19
+ Ethereum: "0xeEFb36c4458dA7798742cf038C5c27E07aB9c51E",
20
+ Optimism: "0xBC6f9d1CBa49DB365728478cefa02F6743617637",
21
+ Polygon: "0x007995f2AEcfBC745f20a7AE8D3a02c0EbF46264",
22
+ Unichain: "0xA7aBDb8f2108901c586543BD5e10E4fA263F4A47",
23
+ Solana: "CXGRA5SCc8jxDbaQPZrmmZNu2JV34DP7gFW4m31uC1zs",
24
+ }
25
+ };
26
+ export const suiExecutorIds = {
27
+ Testnet: {
28
+ executorId: "0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb",
29
+ executorRequestsId: "0x2d9ccf3cce3f7dce408e5455e90b80a8161ad9673d1366c2a5def60ad93657a8",
30
+ },
31
+ Mainnet: {
32
+ executorId: "0xdb0fe8bb1e2b5be628adbea0636063325073e1070ee11e4281457dfd7f158235",
33
+ executorRequestsId: "0xc030df7a3eed1494fa4b64aa8ab63a79041cf1114f4ff2b7ab5aca1c684a21a7 ",
34
+ }
35
+ };
36
+ // Solana Executor Program IDs
37
+ export const solanaExecutorId = {
38
+ Testnet: "execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV",
39
+ Mainnet: "execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV"
40
+ };
41
+ // cost of 1 signature + rounding error on priority fee
42
+ export const SOLANA_MSG_VALUE_BASE_FEE = 5001n;
43
+ // Gas limits must be high enough to cover the worst-case scenario for each chain
44
+ // to avoid relay failures. However, they should not be too high to reduce the
45
+ // `estimatedCost` returned by the quote endpoint.
46
+ export const gasLimits = {
47
+ Testnet: {
48
+ Aptos: 5000n,
49
+ Avalanche: 200000n,
50
+ BaseSepolia: 200000n,
51
+ Sepolia: 200000n,
52
+ Solana: 250000n,
53
+ Sui: 8000000n,
54
+ },
55
+ Mainnet: {
56
+ Aptos: 5000n,
57
+ Arbitrum: 200000n,
58
+ Avalanche: 200000n,
59
+ Base: 200000n,
60
+ Ethereum: 200000n,
61
+ Optimism: 200000n,
62
+ Polygon: 200000n,
63
+ Unichain: 200000n,
64
+ Solana: 250000n,
65
+ Sui: 8000000n,
66
+ },
67
+ };
68
+ // Referrer addresses (to whom the referrer fee should be paid)
69
+ export const referrers = {
70
+ Testnet: {
71
+ Aptos: "0x23b54f6e29bba7f4123d088f4cfcd83f5e23a049de15895b119ce5a6cb5faa91",
72
+ Avalanche: "0x8F26A0025dcCc6Cfc07A7d38756280a10E295ad7",
73
+ BaseSepolia: "0x8F26A0025dcCc6Cfc07A7d38756280a10E295ad7",
74
+ Sepolia: "0x8F26A0025dcCc6Cfc07A7d38756280a10E295ad7",
75
+ Solana: "9r6q2iEg4MBevjC8reaLmQUDxueF3vabUoqDkZ2LoAYe",
76
+ Sui: "0x30bd9b3d5ad00f38fd0c314139ba47ccb3c78353d99880d81125ca0c370b415e",
77
+ },
78
+ Mainnet: {
79
+ Aptos: "0x1f177e724a874ab6267172a3049291c480fc665883e6a3ac95d0909492c09dc8",
80
+ Solana: "JB3rmygUVuVZzgkxvMdV8mSKLJeQAkSXEK284Dqsziah",
81
+ Sui: "0xbfa1240e48c622d97881473953be730091161b7931d89bd6afe667841cf69ef4",
82
+ Arbitrum: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
83
+ Avalanche: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
84
+ Base: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
85
+ Ethereum: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
86
+ Optimism: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
87
+ Polygon: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
88
+ Unichain: "0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",
89
+ }
90
+ };
91
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAqC;IAC1D,OAAO,EAAE,uCAAuC;IAChD,OAAO,EAAE,+BAA+B;CACzC,CAAC;AAEF,wDAAwD;AACxD,MAAM,CAAC,MAAM,aAAa,GAEtB;IACF,OAAO,EAAE;QACP,KAAK,EAAE,oEAAoE;QAC3E,SAAS,EAAE,4CAA4C;QACvD,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,4CAA4C;QACrD,MAAM,EAAE,8CAA8C;KACvD;IACD,OAAO,EAAC;QACN,KAAK,EAAE,oEAAoE;QAC3E,QAAQ,EAAE,4CAA4C;QACtD,SAAS,EAAE,4CAA4C;QACvD,IAAI,EAAE,4CAA4C;QAClD,QAAQ,EAAE,4CAA4C;QACtD,QAAQ,EAAE,4CAA4C;QACtD,OAAO,EAAC,4CAA4C;QACpD,QAAQ,EAAE,4CAA4C;QACtD,MAAM,EAAE,8CAA8C;KACvD;CACF,CAAC;AAIF,MAAM,CAAC,MAAM,cAAc,GAA6C;IACtE,OAAO,EAAE;QACP,UAAU,EACR,oEAAoE;QACtE,kBAAkB,EAChB,oEAAoE;KACvE;IACD,OAAO,EAAE;QACP,UAAU,EAAE,oEAAoE;QAChF,kBAAkB,EAAE,qEAAqE;KAC1F;CACF,CAAC;AAEF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,OAAO,EAAE,6CAA6C;IACtD,OAAO,EAAE,6CAA6C;CACvD,CAAC;AAEF,uDAAuD;AACvD,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAM,CAAC;AAEhD,iFAAiF;AACjF,8EAA8E;AAC9E,kDAAkD;AAClD,MAAM,CAAC,MAAM,SAAS,GAElB;IACF,OAAO,EAAE;QACP,KAAK,EAAE,KAAM;QACb,SAAS,EAAE,OAAQ;QACnB,WAAW,EAAE,OAAQ;QACrB,OAAO,EAAE,OAAQ;QACjB,MAAM,EAAE,OAAQ;QAChB,GAAG,EAAE,QAAU;KAChB;IACD,OAAO,EAAE;QACP,KAAK,EAAE,KAAM;QACb,QAAQ,EAAE,OAAQ;QAClB,SAAS,EAAE,OAAQ;QACnB,IAAI,EAAE,OAAQ;QACd,QAAQ,EAAE,OAAQ;QAClB,QAAQ,EAAE,OAAQ;QAClB,OAAO,EAAE,OAAQ;QACjB,QAAQ,EAAE,OAAQ;QAClB,MAAM,EAAE,OAAQ;QAChB,GAAG,EAAE,QAAU;KAChB;CACF,CAAC;AAEF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,SAAS,GAElB;IACF,OAAO,EAAE;QACP,KAAK,EAAE,oEAAoE;QAC3E,SAAS,EAAE,4CAA4C;QACvD,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,4CAA4C;QACrD,MAAM,EAAE,8CAA8C;QACtD,GAAG,EAAE,oEAAoE;KAC1E;IACD,OAAO,EAAC;QACN,KAAK,EAAE,oEAAoE;QAC3E,MAAM,EAAC,8CAA8C;QACrD,GAAG,EAAE,oEAAoE;QACzE,QAAQ,EAAE,4CAA4C;QACtD,SAAS,EAAE,4CAA4C;QACvD,IAAI,EAAE,4CAA4C;QAClD,QAAQ,EAAE,4CAA4C;QACtD,QAAQ,EAAE,4CAA4C;QACtD,OAAO,EAAE,4CAA4C;QACrD,QAAQ,EAAE,4CAA4C;KACvD;CACF,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { AccountAddress, ChainAddress, ChainsConfig, Contracts, Network, Platform } from "@wormhole-foundation/sdk-connect";
2
+ import type { EvmChains } from "@wormhole-foundation/sdk-evm";
3
+ import { EvmUnsignedTransaction } from "@wormhole-foundation/sdk-evm";
4
+ import type { Provider } from "ethers";
5
+ import { CCTPW7Executor } from "../types";
6
+ import { QuoteDetails } from "..";
7
+ export declare class EvmCCTPW7Executor<N extends Network, C extends EvmChains> implements CCTPW7Executor<N, C> {
8
+ readonly network: N;
9
+ readonly chain: C;
10
+ readonly provider: Provider;
11
+ readonly contracts: Contracts;
12
+ readonly chainId: bigint;
13
+ readonly shimContract: string;
14
+ constructor(network: N, chain: C, provider: Provider, contracts: Contracts);
15
+ static fromRpc<N extends Network>(provider: Provider, config: ChainsConfig<N, Platform>): Promise<EvmCCTPW7Executor<N, EvmChains>>;
16
+ transfer(sender: AccountAddress<C>, recipient: ChainAddress, details: QuoteDetails): AsyncGenerator<EvmUnsignedTransaction<N, C>>;
17
+ private createUnsignedTx;
18
+ }
19
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/evm/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACT,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAGL,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,QAAQ,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,qBAAa,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACnE,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAM7B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAP/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGnB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS;WAelB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAQpC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IA+D/C,OAAO,CAAC,gBAAgB;CAazB"}
@@ -0,0 +1,65 @@
1
+ import { circle, nativeChainIds, toChainId, } from "@wormhole-foundation/sdk-connect";
2
+ import { EvmAddress, EvmPlatform, EvmUnsignedTransaction, addChainId, addFrom, } from "@wormhole-foundation/sdk-evm";
3
+ import { Contract } from "ethers";
4
+ import { shimContracts } from "../consts";
5
+ export class EvmCCTPW7Executor {
6
+ network;
7
+ chain;
8
+ provider;
9
+ contracts;
10
+ chainId;
11
+ shimContract;
12
+ constructor(network, chain, provider, contracts) {
13
+ this.network = network;
14
+ this.chain = chain;
15
+ this.provider = provider;
16
+ this.contracts = contracts;
17
+ if (network === "Devnet")
18
+ throw new Error("CCTPW7Executor not supported on Devnet");
19
+ this.chainId = nativeChainIds.networkChainToNativeChainId.get(network, chain);
20
+ const shimContract = shimContracts[network]?.[chain];
21
+ if (!shimContract)
22
+ throw new Error(`Shim contract for ${chain} not found`);
23
+ this.shimContract = shimContract;
24
+ }
25
+ static async fromRpc(provider, config) {
26
+ const [network, chain] = await EvmPlatform.chainFromRpc(provider);
27
+ const conf = config[chain];
28
+ if (conf.network !== network)
29
+ throw new Error(`Network mismatch: ${conf.network} != ${network}`);
30
+ return new EvmCCTPW7Executor(network, chain, provider, conf.contracts);
31
+ }
32
+ async *transfer(sender, recipient, details) {
33
+ const senderAddress = new EvmAddress(sender).toString();
34
+ const recipientAddress = recipient.address
35
+ .toUniversalAddress()
36
+ .toUint8Array();
37
+ const amount = details.remainingAmount + details.referrerFee;
38
+ const tokenAddr = circle.usdcContract.get(this.network, this.chain);
39
+ const tokenContract = EvmPlatform.getTokenImplementation(this.provider, tokenAddr);
40
+ const allowance = await tokenContract.allowance(senderAddress, this.shimContract);
41
+ if (allowance < amount) {
42
+ const txReq = await tokenContract.approve.populateTransaction(this.shimContract, amount);
43
+ yield this.createUnsignedTx(addFrom(txReq, senderAddress), "ERC20.approve of EvmCCTPW7Executor", false);
44
+ }
45
+ // TODO: type safety. typechain brings in so much boilerplate code and is soft deprecated. use viem?
46
+ const shimAbi = [
47
+ "function depositForBurn(uint256 amount, uint16 destinationChain, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, (address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 nonce)",
48
+ ];
49
+ const shim = new Contract(this.shimContract, shimAbi, this.provider);
50
+ const txReq = await shim.getFunction("depositForBurn").populateTransaction(amount, toChainId(recipient.chain), circle.circleChainId.get(this.network, recipient.chain), recipientAddress, tokenAddr, {
51
+ refundAddress: senderAddress,
52
+ signedQuote: details.signedQuote,
53
+ instructions: details.relayInstructions,
54
+ }, {
55
+ dbps: details.referrerFeeDbps,
56
+ payee: details.referrer.address.toString(),
57
+ });
58
+ txReq.value = details.estimatedCost;
59
+ yield this.createUnsignedTx(addFrom(txReq, senderAddress), "EvmCCTPW7Executor.depositForBurn");
60
+ }
61
+ createUnsignedTx(txReq, description, parallelizable = false) {
62
+ return new EvmUnsignedTransaction(addChainId(txReq, this.chainId), this.network, this.chain, description, parallelizable);
63
+ }
64
+ }
65
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/evm/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./executor";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/evm/index.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { registerProtocol } from "@wormhole-foundation/sdk-definitions";
2
+ import { _platform } from "@wormhole-foundation/sdk-evm";
3
+ import { EvmCCTPW7Executor } from "./executor";
4
+ export * from "./executor";
5
+ registerProtocol(_platform, "CCTPW7Executor", EvmCCTPW7Executor);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/evm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,cAAc,YAAY,CAAC;AAE3B,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC"}