@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,102 @@
1
+ import { DeriveType } from "binary-layout";
2
+ export declare const quoteLayout: readonly [{
3
+ readonly name: "quote";
4
+ readonly binary: "switch";
5
+ readonly idSize: 4;
6
+ readonly idTag: "prefix";
7
+ readonly layouts: readonly [readonly [readonly [1162948657, "EQ01"], readonly [{
8
+ readonly name: "quoterAddress";
9
+ readonly binary: "bytes";
10
+ readonly size: 20;
11
+ }, {
12
+ readonly name: "payeeAddress";
13
+ readonly binary: "bytes";
14
+ readonly size: 32;
15
+ }, {
16
+ readonly name: "srcChain";
17
+ readonly binary: "uint";
18
+ readonly size: 2;
19
+ }, {
20
+ readonly name: "dstChain";
21
+ readonly binary: "uint";
22
+ readonly size: 2;
23
+ }, {
24
+ readonly name: "expiryTime";
25
+ readonly binary: "uint";
26
+ readonly size: 8;
27
+ readonly custom: {
28
+ readonly to: (encoded: bigint) => Date;
29
+ readonly from: (decoded: Date) => bigint;
30
+ };
31
+ }, {
32
+ readonly name: "baseFee";
33
+ readonly binary: "uint";
34
+ readonly size: 8;
35
+ }, {
36
+ readonly name: "dstGasPrice";
37
+ readonly binary: "uint";
38
+ readonly size: 8;
39
+ }, {
40
+ readonly name: "srcPrice";
41
+ readonly binary: "uint";
42
+ readonly size: 8;
43
+ }, {
44
+ readonly name: "dstPrice";
45
+ readonly binary: "uint";
46
+ readonly size: 8;
47
+ }]]];
48
+ }];
49
+ export type Quote = DeriveType<typeof quoteLayout>;
50
+ export declare const signedQuoteLayout: readonly [{
51
+ readonly name: "quote";
52
+ readonly binary: "switch";
53
+ readonly idSize: 4;
54
+ readonly idTag: "prefix";
55
+ readonly layouts: readonly [readonly [readonly [1162948657, "EQ01"], readonly [{
56
+ readonly name: "quoterAddress";
57
+ readonly binary: "bytes";
58
+ readonly size: 20;
59
+ }, {
60
+ readonly name: "payeeAddress";
61
+ readonly binary: "bytes";
62
+ readonly size: 32;
63
+ }, {
64
+ readonly name: "srcChain";
65
+ readonly binary: "uint";
66
+ readonly size: 2;
67
+ }, {
68
+ readonly name: "dstChain";
69
+ readonly binary: "uint";
70
+ readonly size: 2;
71
+ }, {
72
+ readonly name: "expiryTime";
73
+ readonly binary: "uint";
74
+ readonly size: 8;
75
+ readonly custom: {
76
+ readonly to: (encoded: bigint) => Date;
77
+ readonly from: (decoded: Date) => bigint;
78
+ };
79
+ }, {
80
+ readonly name: "baseFee";
81
+ readonly binary: "uint";
82
+ readonly size: 8;
83
+ }, {
84
+ readonly name: "dstGasPrice";
85
+ readonly binary: "uint";
86
+ readonly size: 8;
87
+ }, {
88
+ readonly name: "srcPrice";
89
+ readonly binary: "uint";
90
+ readonly size: 8;
91
+ }, {
92
+ readonly name: "dstPrice";
93
+ readonly binary: "uint";
94
+ readonly size: 8;
95
+ }]]];
96
+ }, {
97
+ readonly name: "signature";
98
+ readonly binary: "bytes";
99
+ readonly size: 65;
100
+ }];
101
+ export type SignedQuote = DeriveType<typeof signedQuoteLayout>;
102
+ //# sourceMappingURL=signedQuote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signedQuote.d.ts","sourceRoot":"","sources":["../../../src/layouts/signedQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAU,MAAM,eAAe,CAAC;AAInD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCG,CAAC;AAE5B,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAEnD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGH,CAAC;AAE5B,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signedQuoteLayout = exports.quoteLayout = void 0;
4
+ const conversions_js_1 = require("./conversions.js");
5
+ exports.quoteLayout = [
6
+ {
7
+ name: "quote",
8
+ binary: "switch",
9
+ idSize: 4,
10
+ idTag: "prefix",
11
+ layouts: [
12
+ [
13
+ [0x45513031, "EQ01"],
14
+ [
15
+ {
16
+ name: "quoterAddress",
17
+ binary: "bytes",
18
+ size: 20,
19
+ },
20
+ {
21
+ name: "payeeAddress",
22
+ binary: "bytes",
23
+ size: 32,
24
+ },
25
+ { name: "srcChain", binary: "uint", size: 2 },
26
+ { name: "dstChain", binary: "uint", size: 2 },
27
+ {
28
+ name: "expiryTime",
29
+ binary: "uint",
30
+ size: 8,
31
+ custom: conversions_js_1.dateConversion,
32
+ },
33
+ { name: "baseFee", binary: "uint", size: 8 },
34
+ { name: "dstGasPrice", binary: "uint", size: 8 },
35
+ { name: "srcPrice", binary: "uint", size: 8 },
36
+ { name: "dstPrice", binary: "uint", size: 8 },
37
+ ],
38
+ ],
39
+ ],
40
+ },
41
+ ];
42
+ exports.signedQuoteLayout = [
43
+ ...exports.quoteLayout,
44
+ { name: "signature", binary: "bytes", size: 65 },
45
+ ];
46
+ //# sourceMappingURL=signedQuote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signedQuote.js","sourceRoot":"","sources":["../../../src/layouts/signedQuote.ts"],"names":[],"mappings":";;;AAEA,qDAAkD;AAErC,QAAA,WAAW,GAAG;IACzB;QACE,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE;YACP;gBACE,CAAC,UAAU,EAAE,MAAM,CAAC;gBACpB;oBACE;wBACE,IAAI,EAAE,eAAe;wBACrB,MAAM,EAAE,OAAO;wBACf,IAAI,EAAE,EAAE;qBACT;oBACD;wBACE,IAAI,EAAE,cAAc;wBACpB,MAAM,EAAE,OAAO;wBACf,IAAI,EAAE,EAAE;qBACT;oBACD,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;oBAC7C,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;oBAC7C;wBACE,IAAI,EAAE,YAAY;wBAClB,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,+BAAc;qBACvB;oBACD,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;oBAC5C,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;oBAChD,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;oBAC7C,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;iBAC9C;aACF;SACF;KACF;CACwB,CAAC;AAIf,QAAA,iBAAiB,GAAG;IAC/B,GAAG,mBAAW;IACd,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;CACvB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { SuiClient } from "@mysten/sui/client";
2
+ import { type AccountAddress, type ChainAddress, type ChainsConfig, type Contracts, type Network, type Platform } from "@wormhole-foundation/sdk-connect";
3
+ import { SuiChains, SuiUnsignedTransaction } from "@wormhole-foundation/sdk-sui";
4
+ import { CCTPW7Executor } from "../types";
5
+ import { QuoteDetails } from "..";
6
+ export declare class SuiCCTPW7Executor<N extends Network, C extends SuiChains> implements CCTPW7Executor<N, C> {
7
+ readonly network: N;
8
+ readonly chain: C;
9
+ readonly provider: SuiClient;
10
+ readonly contracts: Contracts;
11
+ readonly usdcId: string;
12
+ readonly usdcTreasuryId: string;
13
+ readonly tokenMessengerId: string;
14
+ readonly tokenMessengerStateId: string;
15
+ readonly messageTransmitterId: string;
16
+ readonly messageTransmitterStateId: string;
17
+ readonly executorId: string;
18
+ readonly executorRequestsId: string;
19
+ constructor(network: N, chain: C, provider: SuiClient, contracts: Contracts);
20
+ static fromRpc<N extends Network>(provider: SuiClient, config: ChainsConfig<N, Platform>): Promise<SuiCCTPW7Executor<N, SuiChains>>;
21
+ transfer(sender: AccountAddress<C>, recipient: ChainAddress, details: QuoteDetails): AsyncGenerator<SuiUnsignedTransaction<N, C>>;
22
+ private createUnsignedTx;
23
+ }
24
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/sui/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,SAAS,EACT,sBAAsB,EACvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAGlC,qBAAa,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACnE,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAa7B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,SAAS;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAd/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAE3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;gBAGzB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,SAAS;WAiDlB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,SAAS,EACnB,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;IA4F/C,OAAO,CAAC,gBAAgB;CAazB"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SuiCCTPW7Executor = void 0;
4
+ const utils_1 = require("@mysten/sui/utils");
5
+ const transactions_1 = require("@mysten/sui/transactions");
6
+ const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
7
+ const sdk_sui_1 = require("@wormhole-foundation/sdk-sui");
8
+ const sdk_sui_2 = require("@wormhole-foundation/sdk-sui");
9
+ const consts_1 = require("../consts");
10
+ const sdk_sui_cctp_1 = require("@wormhole-foundation/sdk-sui-cctp");
11
+ class SuiCCTPW7Executor {
12
+ network;
13
+ chain;
14
+ provider;
15
+ contracts;
16
+ usdcId;
17
+ usdcTreasuryId;
18
+ tokenMessengerId;
19
+ tokenMessengerStateId;
20
+ messageTransmitterId;
21
+ messageTransmitterStateId;
22
+ executorId;
23
+ executorRequestsId;
24
+ constructor(network, chain, provider, contracts) {
25
+ this.network = network;
26
+ this.chain = chain;
27
+ this.provider = provider;
28
+ this.contracts = contracts;
29
+ if (network === "Devnet")
30
+ throw new Error("CCTPW7Executor not supported on Devnet");
31
+ const getContractAddress = (contract, errorMessage) => {
32
+ if (!contract) {
33
+ throw new Error(errorMessage);
34
+ }
35
+ return contract;
36
+ };
37
+ this.usdcId = getContractAddress(sdk_connect_1.circle.usdcContract.get(this.network, this.chain), `No USDC contract configured for network=${this.network} chain=${this.chain}`);
38
+ const { tokenMessengerState, messageTransmitterState, usdcTreasury } = (0, sdk_sui_cctp_1.suiCircleObjects)(network);
39
+ this.usdcTreasuryId = usdcTreasury;
40
+ this.tokenMessengerId = getContractAddress(contracts.cctp?.tokenMessenger, `Circle Token Messenger contract for domain ${chain} not found`);
41
+ this.messageTransmitterId = getContractAddress(contracts.cctp?.messageTransmitter, `Circle Message Transmitter contract for domain ${chain} not found`);
42
+ this.tokenMessengerStateId = tokenMessengerState;
43
+ this.messageTransmitterStateId = messageTransmitterState;
44
+ this.executorId = getContractAddress(consts_1.suiExecutorIds[network]?.executorId, `Executor contract for ${network} not found`);
45
+ this.executorRequestsId = getContractAddress(consts_1.suiExecutorIds[network]?.executorRequestsId, `Executor requests contract for ${network} not found`);
46
+ }
47
+ static async fromRpc(provider, config) {
48
+ const [network, chain] = await sdk_sui_2.SuiPlatform.chainFromRpc(provider);
49
+ const conf = config[chain];
50
+ if (conf.network !== network)
51
+ throw new Error(`Network mismatch: ${conf.network} != ${network}`);
52
+ return new SuiCCTPW7Executor(network, chain, provider, conf.contracts);
53
+ }
54
+ async *transfer(sender, recipient, details) {
55
+ const tx = new transactions_1.Transaction();
56
+ const senderAddress = new sdk_sui_1.SuiAddress(sender).unwrap();
57
+ const destinationDomain = sdk_connect_1.circle.circleChainId.get(this.network, recipient.chain);
58
+ const [primaryCoin, ...mergeCoins] = await sdk_sui_2.SuiPlatform.getCoins(this.provider, sender, this.usdcId);
59
+ if (primaryCoin === undefined) {
60
+ throw new Error("No USDC in wallet");
61
+ }
62
+ const primaryCoinInput = tx.object(primaryCoin.coinObjectId);
63
+ if (mergeCoins.length > 0) {
64
+ tx.mergeCoins(primaryCoinInput, mergeCoins.map((coin) => tx.object(coin.coinObjectId)));
65
+ }
66
+ let coin;
67
+ if (details.referrerFee > 0n) {
68
+ const [txCoin, referrerFeeCoin] = tx.splitCoins(primaryCoinInput, [
69
+ details.remainingAmount,
70
+ details.referrerFee,
71
+ ]);
72
+ coin = txCoin;
73
+ tx.transferObjects([referrerFeeCoin], (0, sdk_connect_1.canonicalAddress)(details.referrer));
74
+ }
75
+ else {
76
+ const [txCoin] = tx.splitCoins(primaryCoinInput, [
77
+ details.remainingAmount,
78
+ ]);
79
+ coin = txCoin;
80
+ }
81
+ const [_, message] = tx.moveCall({
82
+ target: `${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,
83
+ arguments: [
84
+ coin,
85
+ tx.pure.u32(destinationDomain), // destination_domain
86
+ tx.pure.address(recipient.address.toUniversalAddress().toString()), // mint_recipient
87
+ tx.object(this.tokenMessengerStateId), // token_messenger_minter state
88
+ tx.object(this.messageTransmitterStateId), // message_transmitter state
89
+ tx.object("0x403"), // deny_list id, fixed address
90
+ tx.object(this.usdcTreasuryId), // treasury object Treasury<USDC>
91
+ ],
92
+ typeArguments: [this.usdcId],
93
+ });
94
+ const [source_domain] = tx.moveCall({
95
+ target: `${this.messageTransmitterId}::message::source_domain`,
96
+ arguments: [message],
97
+ });
98
+ const [nonce] = tx.moveCall({
99
+ target: `${this.messageTransmitterId}::message::nonce`,
100
+ arguments: [message],
101
+ });
102
+ const [requestBytes] = tx.moveCall({
103
+ target: `${this.executorRequestsId}::executor_requests::make_cctp_v1_request`,
104
+ arguments: [source_domain, nonce],
105
+ });
106
+ const [executorCoin] = tx.splitCoins(tx.gas, [
107
+ tx.pure.u64(details.estimatedCost),
108
+ ]);
109
+ tx.moveCall({
110
+ target: `${this.executorId}::executor::request_execution`,
111
+ arguments: [
112
+ executorCoin,
113
+ tx.object(utils_1.SUI_CLOCK_OBJECT_ID),
114
+ tx.pure.u16((0, sdk_connect_1.toChainId)(recipient.chain)),
115
+ tx.pure.address("0x0"),
116
+ tx.pure.address(senderAddress),
117
+ tx.pure.vector("u8", details.signedQuote),
118
+ requestBytes,
119
+ tx.pure.vector("u8", details.relayInstructions),
120
+ ],
121
+ });
122
+ yield this.createUnsignedTx(tx, "SuiCCTPW7Executor.Transfer");
123
+ }
124
+ createUnsignedTx(txReq, description, parallelizable = false) {
125
+ return new sdk_sui_1.SuiUnsignedTransaction(txReq, this.network, this.chain, description, parallelizable);
126
+ }
127
+ }
128
+ exports.SuiCCTPW7Executor = SuiCCTPW7Executor;
129
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/sui/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/sui/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_sui_1 = require("@wormhole-foundation/sdk-sui");
19
+ const executor_1 = require("./executor");
20
+ __exportStar(require("./executor"), exports);
21
+ (0, sdk_definitions_1.registerProtocol)(sdk_sui_1._platform, "CCTPW7Executor", executor_1.SuiCCTPW7Executor);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sui/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0EAAwE;AACxE,0DAAyD;AACzD,yCAA+C;AAE/C,6CAA2B;AAE3B,IAAA,kCAAgB,EAAC,mBAAS,EAAE,gBAAgB,EAAE,4BAAiB,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { type AccountAddress, type ChainAddress, type ChainsConfig, type Contracts, type Network, type Platform } from "@wormhole-foundation/sdk-connect";
2
+ import type { SolanaChains } from "@wormhole-foundation/sdk-solana";
3
+ import { SolanaUnsignedTransaction } from "@wormhole-foundation/sdk-solana";
4
+ import { CCTPW7Executor } from "../types";
5
+ import { Connection, PublicKey } from "@solana/web3.js";
6
+ import { QuoteDetails } from "..";
7
+ export declare class SvmCCTPW7Executor<N extends Network, C extends SolanaChains> implements CCTPW7Executor<N, C> {
8
+ readonly network: N;
9
+ readonly chain: C;
10
+ readonly connection: Connection;
11
+ readonly contracts: Contracts;
12
+ readonly tokenMessengerProgramId: PublicKey;
13
+ readonly messageTransmitterProgramId: PublicKey;
14
+ readonly shimProgramId: PublicKey;
15
+ readonly executorProgramId: PublicKey;
16
+ constructor(network: N, chain: C, connection: Connection, contracts: Contracts);
17
+ static fromRpc<N extends Network>(provider: Connection, config: ChainsConfig<N, Platform>): Promise<SvmCCTPW7Executor<N, SolanaChains>>;
18
+ transfer(sender: AccountAddress<C>, recipient: ChainAddress, details: QuoteDetails): AsyncGenerator<SolanaUnsignedTransaction<N, C>>;
19
+ private createUnsignedTx;
20
+ }
21
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/svm/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAIL,yBAAyB,EAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAW,SAAS,EAAe,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAclC,qBAAa,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,YAAY,CACtE,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAS7B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAV/B,QAAQ,CAAC,uBAAuB,EAAE,SAAS,CAAC;IAC5C,QAAQ,CAAC,2BAA2B,EAAE,SAAS,CAAC;IAEhD,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC;gBAG3B,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS;WAkClB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAQvC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAkGlD,OAAO,CAAC,gBAAgB;CAazB"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SvmCCTPW7Executor = void 0;
4
+ const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
5
+ const sdk_solana_1 = require("@wormhole-foundation/sdk-solana");
6
+ const consts_1 = require("../consts");
7
+ const web3_js_1 = require("@solana/web3.js");
8
+ const spl_token_1 = require("@solana/spl-token");
9
+ const sdk_solana_cctp_1 = require("@wormhole-foundation/sdk-solana-cctp");
10
+ const anchor_1 = require("@coral-xyz/anchor");
11
+ const example_cctp_with_executor_1 = require("./idl/example_cctp_with_executor");
12
+ const layouts_1 = require("../layouts");
13
+ class SvmCCTPW7Executor {
14
+ network;
15
+ chain;
16
+ connection;
17
+ contracts;
18
+ tokenMessengerProgramId;
19
+ messageTransmitterProgramId;
20
+ shimProgramId;
21
+ executorProgramId;
22
+ constructor(network, chain, connection, contracts) {
23
+ this.network = network;
24
+ this.chain = chain;
25
+ this.connection = connection;
26
+ this.contracts = contracts;
27
+ if (network === "Devnet")
28
+ throw new Error("CCTPW7Executor not supported on Devnet");
29
+ const getContractAddress = (contract, errorMessage) => {
30
+ if (!contract)
31
+ throw new Error(errorMessage);
32
+ return new web3_js_1.PublicKey(contract);
33
+ };
34
+ this.tokenMessengerProgramId = getContractAddress(contracts.cctp?.tokenMessenger, `Circle Token Messenger contract for domain ${chain} not found`);
35
+ this.messageTransmitterProgramId = getContractAddress(contracts.cctp?.messageTransmitter, `Circle Message Transmitter contract for domain ${chain} not found`);
36
+ this.shimProgramId = getContractAddress(consts_1.shimContracts[network]?.[chain], `Shim contract for ${chain} not found`);
37
+ this.executorProgramId = getContractAddress(consts_1.solanaExecutorId[network], `Executor contract for ${network} not found`);
38
+ }
39
+ static async fromRpc(provider, config) {
40
+ const [network, chain] = await sdk_solana_1.SolanaPlatform.chainFromRpc(provider);
41
+ const conf = config[chain];
42
+ if (conf.network !== network)
43
+ throw new Error(`Network mismatch: ${conf.network} != ${network}`);
44
+ return new SvmCCTPW7Executor(network, chain, provider, conf.contracts);
45
+ }
46
+ async *transfer(sender, recipient, details) {
47
+ const usdc = new web3_js_1.PublicKey(sdk_connect_1.circle.usdcContract.get(this.network, this.chain));
48
+ const senderPk = new sdk_solana_1.SolanaAddress(sender).unwrap();
49
+ const senderAta = (0, spl_token_1.getAssociatedTokenAddressSync)(usdc, senderPk);
50
+ const referrer = new sdk_solana_1.SolanaAddress(details.referrer.address).unwrap();
51
+ const transaction = new web3_js_1.Transaction();
52
+ transaction.feePayer = senderPk;
53
+ if (details.referrerFee > 0n) {
54
+ const referrerAta = (0, spl_token_1.getAssociatedTokenAddressSync)(usdc, referrer);
55
+ const referrerAtaAccount = await this.connection.getAccountInfo(referrerAta);
56
+ if (!referrerAtaAccount) {
57
+ transaction.add((0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(senderPk, referrerAta, referrer, usdc));
58
+ }
59
+ transaction.add((0, spl_token_1.createTransferInstruction)(senderAta, referrerAta, senderPk, details.referrerFee));
60
+ }
61
+ const destinationDomain = sdk_connect_1.circle.circleChainId.get(this.network, recipient.chain);
62
+ const destinationAddress = recipient.address.toUniversalAddress();
63
+ const msgSendEvent = web3_js_1.Keypair.generate();
64
+ transaction.add(await (0, sdk_solana_cctp_1.createDepositForBurnInstruction)(this.messageTransmitterProgramId, this.tokenMessengerProgramId, usdc, destinationDomain, senderPk, senderAta, destinationAddress, details.remainingAmount, msgSendEvent.publicKey));
65
+ const shimProgram = new anchor_1.Program(example_cctp_with_executor_1.ExampleCctpWithExecutorIdl, this.shimProgramId, { connection: null });
66
+ const signedQuote = (0, sdk_connect_1.deserializeLayout)(layouts_1.signedQuoteLayout, details.signedQuote);
67
+ const messageTransmitter = sdk_solana_1.utils.deriveAddress("message_transmitter", this.messageTransmitterProgramId);
68
+ transaction.add(await shimProgram.methods
69
+ .relayLastMessage({
70
+ execAmount: new anchor_1.BN(details.estimatedCost.toString()),
71
+ recipientChain: (0, sdk_connect_1.toChainId)(recipient.chain),
72
+ signedQuoteBytes: Buffer.from(details.signedQuote),
73
+ relayInstructions: Buffer.from(details.relayInstructions),
74
+ })
75
+ .accounts({
76
+ payer: senderPk,
77
+ messageTransmitter,
78
+ payee: new web3_js_1.PublicKey(signedQuote.quote.payeeAddress),
79
+ executorProgram: this.executorProgramId,
80
+ })
81
+ .instruction());
82
+ yield this.createUnsignedTx({ transaction, signers: [msgSendEvent] }, "SvmCCTPW7Executor.Transfer");
83
+ }
84
+ createUnsignedTx(txReq, description, parallelizable = false) {
85
+ return new sdk_solana_1.SolanaUnsignedTransaction(txReq, this.network, this.chain, description, parallelizable);
86
+ }
87
+ }
88
+ exports.SvmCCTPW7Executor = SvmCCTPW7Executor;
89
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/svm/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ export type ExampleCctpWithExecutor = {
2
+ version: "0.1.0";
3
+ name: "example_cctp_with_executor";
4
+ instructions: [
5
+ {
6
+ name: "relayLastMessage";
7
+ accounts: [
8
+ {
9
+ name: "payer";
10
+ isMut: true;
11
+ isSigner: true;
12
+ },
13
+ {
14
+ name: "payee";
15
+ isMut: true;
16
+ isSigner: false;
17
+ },
18
+ {
19
+ name: "messageTransmitter";
20
+ isMut: false;
21
+ isSigner: false;
22
+ },
23
+ {
24
+ name: "executorProgram";
25
+ isMut: false;
26
+ isSigner: false;
27
+ },
28
+ {
29
+ name: "systemProgram";
30
+ isMut: false;
31
+ isSigner: false;
32
+ }
33
+ ];
34
+ args: [
35
+ {
36
+ name: "args";
37
+ type: {
38
+ defined: "relayLastMessageArgs";
39
+ };
40
+ }
41
+ ];
42
+ }
43
+ ];
44
+ types: [
45
+ {
46
+ name: "relayLastMessageArgs";
47
+ type: {
48
+ kind: "struct";
49
+ fields: [
50
+ {
51
+ name: "recipientChain";
52
+ type: "u16";
53
+ },
54
+ {
55
+ name: "execAmount";
56
+ type: "u64";
57
+ },
58
+ {
59
+ name: "signedQuoteBytes";
60
+ type: "bytes";
61
+ },
62
+ {
63
+ name: "relayInstructions";
64
+ type: "bytes";
65
+ }
66
+ ];
67
+ };
68
+ }
69
+ ];
70
+ };
71
+ export declare const ExampleCctpWithExecutorIdl: ExampleCctpWithExecutor;
72
+ //# sourceMappingURL=example_cctp_with_executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example_cctp_with_executor.d.ts","sourceRoot":"","sources":["../../../../src/svm/idl/example_cctp_with_executor.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,4BAA4B,CAAC;IACnC,YAAY,EAAE;QACZ;YACE,IAAI,EAAE,kBAAkB,CAAC;YACzB,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,OAAO,CAAC;oBACd,KAAK,EAAE,IAAI,CAAC;oBACZ,QAAQ,EAAE,IAAI,CAAC;iBAChB;gBACD;oBACE,IAAI,EAAE,OAAO,CAAC;oBACd,KAAK,EAAE,IAAI,CAAC;oBACZ,QAAQ,EAAE,KAAK,CAAC;iBACjB;gBACD;oBACE,IAAI,EAAE,oBAAoB,CAAC;oBAC3B,KAAK,EAAE,KAAK,CAAC;oBACb,QAAQ,EAAE,KAAK,CAAC;iBACjB;gBACD;oBACE,IAAI,EAAE,iBAAiB,CAAC;oBACxB,KAAK,EAAE,KAAK,CAAC;oBACb,QAAQ,EAAE,KAAK,CAAC;iBACjB;gBACD;oBACE,IAAI,EAAE,eAAe,CAAC;oBACtB,KAAK,EAAE,KAAK,CAAC;oBACb,QAAQ,EAAE,KAAK,CAAC;iBACjB;aACF,CAAC;YACF,IAAI,EAAE;gBACJ;oBACE,IAAI,EAAE,MAAM,CAAC;oBACb,IAAI,EAAE;wBACJ,OAAO,EAAE,sBAAsB,CAAC;qBACjC,CAAC;iBACH;aACF,CAAC;SACH;KACF,CAAC;IACF,KAAK,EAAE;QACL;YACE,IAAI,EAAE,sBAAsB,CAAC;YAC7B,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ,CAAC;gBACf,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,gBAAgB,CAAC;wBACvB,IAAI,EAAE,KAAK,CAAC;qBACb;oBACD;wBACE,IAAI,EAAE,YAAY,CAAC;wBACnB,IAAI,EAAE,KAAK,CAAC;qBACb;oBACD;wBACE,IAAI,EAAE,kBAAkB,CAAC;wBACzB,IAAI,EAAE,OAAO,CAAC;qBACf;oBACD;wBACE,IAAI,EAAE,mBAAmB,CAAC;wBAC1B,IAAI,EAAE,OAAO,CAAC;qBACf;iBACF,CAAC;aACH,CAAC;SACH;KACF,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,uBAqExC,CAAC"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExampleCctpWithExecutorIdl = void 0;
4
+ exports.ExampleCctpWithExecutorIdl = {
5
+ version: "0.1.0",
6
+ name: "example_cctp_with_executor",
7
+ instructions: [
8
+ {
9
+ name: "relayLastMessage",
10
+ accounts: [
11
+ {
12
+ name: "payer",
13
+ isMut: true,
14
+ isSigner: true,
15
+ },
16
+ {
17
+ name: "payee",
18
+ isMut: true,
19
+ isSigner: false,
20
+ },
21
+ {
22
+ name: "messageTransmitter",
23
+ isMut: false,
24
+ isSigner: false,
25
+ },
26
+ {
27
+ name: "executorProgram",
28
+ isMut: false,
29
+ isSigner: false,
30
+ },
31
+ {
32
+ name: "systemProgram",
33
+ isMut: false,
34
+ isSigner: false,
35
+ },
36
+ ],
37
+ args: [
38
+ {
39
+ name: "args",
40
+ type: {
41
+ defined: "relayLastMessageArgs",
42
+ },
43
+ },
44
+ ],
45
+ },
46
+ ],
47
+ types: [
48
+ {
49
+ name: "relayLastMessageArgs",
50
+ type: {
51
+ kind: "struct",
52
+ fields: [
53
+ {
54
+ name: "recipientChain",
55
+ type: "u16",
56
+ },
57
+ {
58
+ name: "execAmount",
59
+ type: "u64",
60
+ },
61
+ {
62
+ name: "signedQuoteBytes",
63
+ type: "bytes",
64
+ },
65
+ {
66
+ name: "relayInstructions",
67
+ type: "bytes",
68
+ },
69
+ ],
70
+ },
71
+ },
72
+ ],
73
+ };
74
+ //# sourceMappingURL=example_cctp_with_executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example_cctp_with_executor.js","sourceRoot":"","sources":["../../../../src/svm/idl/example_cctp_with_executor.ts"],"names":[],"mappings":";;;AAuEa,QAAA,0BAA0B,GAA4B;IACjE,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,4BAA4B;IAClC,YAAY,EAAE;QACZ;YACE,IAAI,EAAE,kBAAkB;YACxB,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI;oBACX,QAAQ,EAAE,IAAI;iBACf;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI;oBACX,QAAQ,EAAE,KAAK;iBAChB;gBACD;oBACE,IAAI,EAAE,oBAAoB;oBAC1B,KAAK,EAAE,KAAK;oBACZ,QAAQ,EAAE,KAAK;iBAChB;gBACD;oBACE,IAAI,EAAE,iBAAiB;oBACvB,KAAK,EAAE,KAAK;oBACZ,QAAQ,EAAE,KAAK;iBAChB;gBACD;oBACE,IAAI,EAAE,eAAe;oBACrB,KAAK,EAAE,KAAK;oBACZ,QAAQ,EAAE,KAAK;iBAChB;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;wBACJ,OAAO,EAAE,sBAAsB;qBAChC;iBACF;aACF;SACF;KACF;IACD,KAAK,EAAE;QACL;YACE,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,KAAK;qBACZ;oBACD;wBACE,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,KAAK;qBACZ;oBACD;wBACE,IAAI,EAAE,kBAAkB;wBACxB,IAAI,EAAE,OAAO;qBACd;oBACD;wBACE,IAAI,EAAE,mBAAmB;wBACzB,IAAI,EAAE,OAAO;qBACd;iBACF;aACF;SACF;KACF;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./executor";
2
+ //# sourceMappingURL=index.d.ts.map