@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,29 @@
1
+ import { layoutItems } from "@wormhole-foundation/sdk-connect";
2
+ export const gasInstructionLayout = [
3
+ { name: "gasLimit", binary: "uint", size: 16 },
4
+ { name: "msgValue", binary: "uint", size: 16 },
5
+ ];
6
+ export const gasDropOffInstructionLayout = [
7
+ { name: "dropOff", binary: "uint", size: 16 },
8
+ { name: "recipient", ...layoutItems.universalAddressItem },
9
+ ];
10
+ export const relayInstructionLayout = [
11
+ {
12
+ name: "request",
13
+ binary: "switch",
14
+ idSize: 1,
15
+ idTag: "type",
16
+ layouts: [
17
+ [[1, "GasInstruction"], gasInstructionLayout],
18
+ [[2, "GasDropOffInstruction"], gasDropOffInstructionLayout],
19
+ ],
20
+ },
21
+ ];
22
+ export const relayInstructionsLayout = [
23
+ {
24
+ name: "requests",
25
+ binary: "array",
26
+ layout: relayInstructionLayout,
27
+ },
28
+ ];
29
+ //# sourceMappingURL=relayInstruction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relayInstruction.js","sourceRoot":"","sources":["../../../src/layouts/relayInstruction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAG/D,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;IAC9C,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;CACrB,CAAC;AAI5B,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;IAC7C,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC,oBAAoB,EAAE;CACjC,CAAC;AAM5B,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC;QACE,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,MAAM;QACb,OAAO,EAAE;YACP,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;YAC7C,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,EAAE,2BAA2B,CAAC;SAC5D;KACF;CACwB,CAAC;AAI5B,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC;QACE,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,sBAAsB;KAC/B;CACwB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { DeriveType } from "binary-layout";
2
+ export declare enum RequestPrefix {
3
+ ERM1 = "ERM1",// MM
4
+ ERV1 = "ERV1",// VAA_V1
5
+ ERN1 = "ERN1",// NTT_V1
6
+ ERC1 = "ERC1"
7
+ }
8
+ export declare const cctpV1RequestLayout: readonly [{
9
+ readonly name: "sourceDomain";
10
+ readonly binary: "uint";
11
+ readonly size: 4;
12
+ }, {
13
+ readonly name: "nonce";
14
+ readonly binary: "uint";
15
+ readonly size: 8;
16
+ }];
17
+ export type CCTPv1Request = DeriveType<typeof cctpV1RequestLayout>;
18
+ //# sourceMappingURL=requestForExecution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestForExecution.d.ts","sourceRoot":"","sources":["../../../src/layouts/requestForExecution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAU,MAAM,eAAe,CAAC;AAEnD,oBAAY,aAAa;IACvB,IAAI,SAAS,CAAE,KAAK;IACpB,IAAI,SAAS,CAAE,SAAS;IACxB,IAAI,SAAS,CAAE,SAAS;IACxB,IAAI,SAAS;CACd;AAED,eAAO,MAAM,mBAAmB;;;;;;;;EAGL,CAAC;AAE5B,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export var RequestPrefix;
2
+ (function (RequestPrefix) {
3
+ RequestPrefix["ERM1"] = "ERM1";
4
+ RequestPrefix["ERV1"] = "ERV1";
5
+ RequestPrefix["ERN1"] = "ERN1";
6
+ RequestPrefix["ERC1"] = "ERC1";
7
+ })(RequestPrefix || (RequestPrefix = {}));
8
+ export const cctpV1RequestLayout = [
9
+ { name: "sourceDomain", binary: "uint", size: 4 },
10
+ { name: "nonce", binary: "uint", size: 8 },
11
+ ];
12
+ //# sourceMappingURL=requestForExecution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestForExecution.js","sourceRoot":"","sources":["../../../src/layouts/requestForExecution.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,8BAAa,CAAA;AACf,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;IACjD,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;CACjB,CAAC"}
@@ -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,43 @@
1
+ import { dateConversion } from "./conversions.js";
2
+ export const quoteLayout = [
3
+ {
4
+ name: "quote",
5
+ binary: "switch",
6
+ idSize: 4,
7
+ idTag: "prefix",
8
+ layouts: [
9
+ [
10
+ [0x45513031, "EQ01"],
11
+ [
12
+ {
13
+ name: "quoterAddress",
14
+ binary: "bytes",
15
+ size: 20,
16
+ },
17
+ {
18
+ name: "payeeAddress",
19
+ binary: "bytes",
20
+ size: 32,
21
+ },
22
+ { name: "srcChain", binary: "uint", size: 2 },
23
+ { name: "dstChain", binary: "uint", size: 2 },
24
+ {
25
+ name: "expiryTime",
26
+ binary: "uint",
27
+ size: 8,
28
+ custom: dateConversion,
29
+ },
30
+ { name: "baseFee", binary: "uint", size: 8 },
31
+ { name: "dstGasPrice", binary: "uint", size: 8 },
32
+ { name: "srcPrice", binary: "uint", size: 8 },
33
+ { name: "dstPrice", binary: "uint", size: 8 },
34
+ ],
35
+ ],
36
+ ],
37
+ },
38
+ ];
39
+ export const signedQuoteLayout = [
40
+ ...quoteLayout,
41
+ { name: "signature", binary: "bytes", size: 65 },
42
+ ];
43
+ //# sourceMappingURL=signedQuote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signedQuote.js","sourceRoot":"","sources":["../../../src/layouts/signedQuote.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,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,cAAc;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;AAI5B,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,GAAG,WAAW;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,125 @@
1
+ import { SUI_CLOCK_OBJECT_ID } from "@mysten/sui/utils";
2
+ import { Transaction } from "@mysten/sui/transactions";
3
+ import { canonicalAddress, circle, toChainId, } from "@wormhole-foundation/sdk-connect";
4
+ import { SuiAddress, SuiUnsignedTransaction, } from "@wormhole-foundation/sdk-sui";
5
+ import { SuiPlatform } from "@wormhole-foundation/sdk-sui";
6
+ import { suiExecutorIds } from "../consts";
7
+ import { suiCircleObjects } from "@wormhole-foundation/sdk-sui-cctp";
8
+ export class SuiCCTPW7Executor {
9
+ network;
10
+ chain;
11
+ provider;
12
+ contracts;
13
+ usdcId;
14
+ usdcTreasuryId;
15
+ tokenMessengerId;
16
+ tokenMessengerStateId;
17
+ messageTransmitterId;
18
+ messageTransmitterStateId;
19
+ executorId;
20
+ executorRequestsId;
21
+ constructor(network, chain, provider, contracts) {
22
+ this.network = network;
23
+ this.chain = chain;
24
+ this.provider = provider;
25
+ this.contracts = contracts;
26
+ if (network === "Devnet")
27
+ throw new Error("CCTPW7Executor not supported on Devnet");
28
+ const getContractAddress = (contract, errorMessage) => {
29
+ if (!contract) {
30
+ throw new Error(errorMessage);
31
+ }
32
+ return contract;
33
+ };
34
+ this.usdcId = getContractAddress(circle.usdcContract.get(this.network, this.chain), `No USDC contract configured for network=${this.network} chain=${this.chain}`);
35
+ const { tokenMessengerState, messageTransmitterState, usdcTreasury } = suiCircleObjects(network);
36
+ this.usdcTreasuryId = usdcTreasury;
37
+ this.tokenMessengerId = getContractAddress(contracts.cctp?.tokenMessenger, `Circle Token Messenger contract for domain ${chain} not found`);
38
+ this.messageTransmitterId = getContractAddress(contracts.cctp?.messageTransmitter, `Circle Message Transmitter contract for domain ${chain} not found`);
39
+ this.tokenMessengerStateId = tokenMessengerState;
40
+ this.messageTransmitterStateId = messageTransmitterState;
41
+ this.executorId = getContractAddress(suiExecutorIds[network]?.executorId, `Executor contract for ${network} not found`);
42
+ this.executorRequestsId = getContractAddress(suiExecutorIds[network]?.executorRequestsId, `Executor requests contract for ${network} not found`);
43
+ }
44
+ static async fromRpc(provider, config) {
45
+ const [network, chain] = await SuiPlatform.chainFromRpc(provider);
46
+ const conf = config[chain];
47
+ if (conf.network !== network)
48
+ throw new Error(`Network mismatch: ${conf.network} != ${network}`);
49
+ return new SuiCCTPW7Executor(network, chain, provider, conf.contracts);
50
+ }
51
+ async *transfer(sender, recipient, details) {
52
+ const tx = new Transaction();
53
+ const senderAddress = new SuiAddress(sender).unwrap();
54
+ const destinationDomain = circle.circleChainId.get(this.network, recipient.chain);
55
+ const [primaryCoin, ...mergeCoins] = await SuiPlatform.getCoins(this.provider, sender, this.usdcId);
56
+ if (primaryCoin === undefined) {
57
+ throw new Error("No USDC in wallet");
58
+ }
59
+ const primaryCoinInput = tx.object(primaryCoin.coinObjectId);
60
+ if (mergeCoins.length > 0) {
61
+ tx.mergeCoins(primaryCoinInput, mergeCoins.map((coin) => tx.object(coin.coinObjectId)));
62
+ }
63
+ let coin;
64
+ if (details.referrerFee > 0n) {
65
+ const [txCoin, referrerFeeCoin] = tx.splitCoins(primaryCoinInput, [
66
+ details.remainingAmount,
67
+ details.referrerFee,
68
+ ]);
69
+ coin = txCoin;
70
+ tx.transferObjects([referrerFeeCoin], canonicalAddress(details.referrer));
71
+ }
72
+ else {
73
+ const [txCoin] = tx.splitCoins(primaryCoinInput, [
74
+ details.remainingAmount,
75
+ ]);
76
+ coin = txCoin;
77
+ }
78
+ const [_, message] = tx.moveCall({
79
+ target: `${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,
80
+ arguments: [
81
+ coin,
82
+ tx.pure.u32(destinationDomain), // destination_domain
83
+ tx.pure.address(recipient.address.toUniversalAddress().toString()), // mint_recipient
84
+ tx.object(this.tokenMessengerStateId), // token_messenger_minter state
85
+ tx.object(this.messageTransmitterStateId), // message_transmitter state
86
+ tx.object("0x403"), // deny_list id, fixed address
87
+ tx.object(this.usdcTreasuryId), // treasury object Treasury<USDC>
88
+ ],
89
+ typeArguments: [this.usdcId],
90
+ });
91
+ const [source_domain] = tx.moveCall({
92
+ target: `${this.messageTransmitterId}::message::source_domain`,
93
+ arguments: [message],
94
+ });
95
+ const [nonce] = tx.moveCall({
96
+ target: `${this.messageTransmitterId}::message::nonce`,
97
+ arguments: [message],
98
+ });
99
+ const [requestBytes] = tx.moveCall({
100
+ target: `${this.executorRequestsId}::executor_requests::make_cctp_v1_request`,
101
+ arguments: [source_domain, nonce],
102
+ });
103
+ const [executorCoin] = tx.splitCoins(tx.gas, [
104
+ tx.pure.u64(details.estimatedCost),
105
+ ]);
106
+ tx.moveCall({
107
+ target: `${this.executorId}::executor::request_execution`,
108
+ arguments: [
109
+ executorCoin,
110
+ tx.object(SUI_CLOCK_OBJECT_ID),
111
+ tx.pure.u16(toChainId(recipient.chain)),
112
+ tx.pure.address("0x0"),
113
+ tx.pure.address(senderAddress),
114
+ tx.pure.vector("u8", details.signedQuote),
115
+ requestBytes,
116
+ tx.pure.vector("u8", details.relayInstructions),
117
+ ],
118
+ });
119
+ yield this.createUnsignedTx(tx, "SuiCCTPW7Executor.Transfer");
120
+ }
121
+ createUnsignedTx(txReq, description, parallelizable = false) {
122
+ return new SuiUnsignedTransaction(txReq, this.network, this.chain, description, parallelizable);
123
+ }
124
+ }
125
+ //# 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,6 @@
1
+ import { registerProtocol } from "@wormhole-foundation/sdk-definitions";
2
+ import { _platform } from "@wormhole-foundation/sdk-sui";
3
+ import { SuiCCTPW7Executor } from "./executor";
4
+ export * from "./executor";
5
+ registerProtocol(_platform, "CCTPW7Executor", SuiCCTPW7Executor);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sui/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"}
@@ -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,85 @@
1
+ import { circle, deserializeLayout, toChainId, } from "@wormhole-foundation/sdk-connect";
2
+ import { utils, SolanaAddress, SolanaPlatform, SolanaUnsignedTransaction, } from "@wormhole-foundation/sdk-solana";
3
+ import { shimContracts, solanaExecutorId } from "../consts";
4
+ import { Keypair, PublicKey, Transaction } from "@solana/web3.js";
5
+ import { createAssociatedTokenAccountIdempotentInstruction, createTransferInstruction, getAssociatedTokenAddressSync, } from "@solana/spl-token";
6
+ import { createDepositForBurnInstruction } from "@wormhole-foundation/sdk-solana-cctp";
7
+ import { BN, Program } from "@coral-xyz/anchor";
8
+ import { ExampleCctpWithExecutorIdl, } from "./idl/example_cctp_with_executor";
9
+ import { signedQuoteLayout } from "../layouts";
10
+ export class SvmCCTPW7Executor {
11
+ network;
12
+ chain;
13
+ connection;
14
+ contracts;
15
+ tokenMessengerProgramId;
16
+ messageTransmitterProgramId;
17
+ shimProgramId;
18
+ executorProgramId;
19
+ constructor(network, chain, connection, contracts) {
20
+ this.network = network;
21
+ this.chain = chain;
22
+ this.connection = connection;
23
+ this.contracts = contracts;
24
+ if (network === "Devnet")
25
+ throw new Error("CCTPW7Executor not supported on Devnet");
26
+ const getContractAddress = (contract, errorMessage) => {
27
+ if (!contract)
28
+ throw new Error(errorMessage);
29
+ return new PublicKey(contract);
30
+ };
31
+ this.tokenMessengerProgramId = getContractAddress(contracts.cctp?.tokenMessenger, `Circle Token Messenger contract for domain ${chain} not found`);
32
+ this.messageTransmitterProgramId = getContractAddress(contracts.cctp?.messageTransmitter, `Circle Message Transmitter contract for domain ${chain} not found`);
33
+ this.shimProgramId = getContractAddress(shimContracts[network]?.[chain], `Shim contract for ${chain} not found`);
34
+ this.executorProgramId = getContractAddress(solanaExecutorId[network], `Executor contract for ${network} not found`);
35
+ }
36
+ static async fromRpc(provider, config) {
37
+ const [network, chain] = await SolanaPlatform.chainFromRpc(provider);
38
+ const conf = config[chain];
39
+ if (conf.network !== network)
40
+ throw new Error(`Network mismatch: ${conf.network} != ${network}`);
41
+ return new SvmCCTPW7Executor(network, chain, provider, conf.contracts);
42
+ }
43
+ async *transfer(sender, recipient, details) {
44
+ const usdc = new PublicKey(circle.usdcContract.get(this.network, this.chain));
45
+ const senderPk = new SolanaAddress(sender).unwrap();
46
+ const senderAta = getAssociatedTokenAddressSync(usdc, senderPk);
47
+ const referrer = new SolanaAddress(details.referrer.address).unwrap();
48
+ const transaction = new Transaction();
49
+ transaction.feePayer = senderPk;
50
+ if (details.referrerFee > 0n) {
51
+ const referrerAta = getAssociatedTokenAddressSync(usdc, referrer);
52
+ const referrerAtaAccount = await this.connection.getAccountInfo(referrerAta);
53
+ if (!referrerAtaAccount) {
54
+ transaction.add(createAssociatedTokenAccountIdempotentInstruction(senderPk, referrerAta, referrer, usdc));
55
+ }
56
+ transaction.add(createTransferInstruction(senderAta, referrerAta, senderPk, details.referrerFee));
57
+ }
58
+ const destinationDomain = circle.circleChainId.get(this.network, recipient.chain);
59
+ const destinationAddress = recipient.address.toUniversalAddress();
60
+ const msgSendEvent = Keypair.generate();
61
+ transaction.add(await createDepositForBurnInstruction(this.messageTransmitterProgramId, this.tokenMessengerProgramId, usdc, destinationDomain, senderPk, senderAta, destinationAddress, details.remainingAmount, msgSendEvent.publicKey));
62
+ const shimProgram = new Program(ExampleCctpWithExecutorIdl, this.shimProgramId, { connection: null });
63
+ const signedQuote = deserializeLayout(signedQuoteLayout, details.signedQuote);
64
+ const messageTransmitter = utils.deriveAddress("message_transmitter", this.messageTransmitterProgramId);
65
+ transaction.add(await shimProgram.methods
66
+ .relayLastMessage({
67
+ execAmount: new BN(details.estimatedCost.toString()),
68
+ recipientChain: toChainId(recipient.chain),
69
+ signedQuoteBytes: Buffer.from(details.signedQuote),
70
+ relayInstructions: Buffer.from(details.relayInstructions),
71
+ })
72
+ .accounts({
73
+ payer: senderPk,
74
+ messageTransmitter,
75
+ payee: new PublicKey(signedQuote.quote.payeeAddress),
76
+ executorProgram: this.executorProgramId,
77
+ })
78
+ .instruction());
79
+ yield this.createUnsignedTx({ transaction, signers: [msgSendEvent] }, "SvmCCTPW7Executor.Transfer");
80
+ }
81
+ createUnsignedTx(txReq, description, parallelizable = false) {
82
+ return new SolanaUnsignedTransaction(txReq, this.network, this.chain, description, parallelizable);
83
+ }
84
+ }
85
+ //# 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"}