@hyperlane-xyz/sealevel-sdk 27.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/LICENSE.md +193 -0
  2. package/dist/accounts/mint.d.ts +43 -0
  3. package/dist/accounts/mint.d.ts.map +1 -0
  4. package/dist/accounts/mint.js +159 -0
  5. package/dist/accounts/mint.js.map +1 -0
  6. package/dist/accounts/multisig-ism-message-id.d.ts +14 -0
  7. package/dist/accounts/multisig-ism-message-id.d.ts.map +1 -0
  8. package/dist/accounts/multisig-ism-message-id.js +32 -0
  9. package/dist/accounts/multisig-ism-message-id.js.map +1 -0
  10. package/dist/accounts/test-ism.d.ts +5 -0
  11. package/dist/accounts/test-ism.d.ts.map +1 -0
  12. package/dist/accounts/test-ism.js +8 -0
  13. package/dist/accounts/test-ism.js.map +1 -0
  14. package/dist/accounts/token.d.ts +60 -0
  15. package/dist/accounts/token.d.ts.map +1 -0
  16. package/dist/accounts/token.js +127 -0
  17. package/dist/accounts/token.js.map +1 -0
  18. package/dist/clients/protocol.d.ts +21 -0
  19. package/dist/clients/protocol.d.ts.map +1 -0
  20. package/dist/clients/protocol.js +51 -0
  21. package/dist/clients/protocol.js.map +1 -0
  22. package/dist/clients/provider.d.ts +66 -0
  23. package/dist/clients/provider.d.ts.map +1 -0
  24. package/dist/clients/provider.js +237 -0
  25. package/dist/clients/provider.js.map +1 -0
  26. package/dist/clients/signer.d.ts +61 -0
  27. package/dist/clients/signer.d.ts.map +1 -0
  28. package/dist/clients/signer.js +314 -0
  29. package/dist/clients/signer.js.map +1 -0
  30. package/dist/codecs/account-data.d.ts +8 -0
  31. package/dist/codecs/account-data.d.ts.map +1 -0
  32. package/dist/codecs/account-data.js +20 -0
  33. package/dist/codecs/account-data.js.map +1 -0
  34. package/dist/codecs/binary.d.ts +34 -0
  35. package/dist/codecs/binary.d.ts.map +1 -0
  36. package/dist/codecs/binary.js +165 -0
  37. package/dist/codecs/binary.js.map +1 -0
  38. package/dist/codecs/shared.d.ts +81 -0
  39. package/dist/codecs/shared.d.ts.map +1 -0
  40. package/dist/codecs/shared.js +241 -0
  41. package/dist/codecs/shared.js.map +1 -0
  42. package/dist/constants.d.ts +13 -0
  43. package/dist/constants.d.ts.map +1 -0
  44. package/dist/constants.js +21 -0
  45. package/dist/constants.js.map +1 -0
  46. package/dist/deploy/program-deployer.d.ts +51 -0
  47. package/dist/deploy/program-deployer.d.ts.map +1 -0
  48. package/dist/deploy/program-deployer.js +176 -0
  49. package/dist/deploy/program-deployer.js.map +1 -0
  50. package/dist/deploy/resolve-program.d.ts +9 -0
  51. package/dist/deploy/resolve-program.d.ts.map +1 -0
  52. package/dist/deploy/resolve-program.js +24 -0
  53. package/dist/deploy/resolve-program.js.map +1 -0
  54. package/dist/generated/core-addresses.d.ts +14 -0
  55. package/dist/generated/core-addresses.d.ts.map +1 -0
  56. package/dist/generated/core-addresses.js +55 -0
  57. package/dist/generated/core-addresses.js.map +1 -0
  58. package/dist/hook/hook-artifact-manager.d.ts +17 -0
  59. package/dist/hook/hook-artifact-manager.d.ts.map +1 -0
  60. package/dist/hook/hook-artifact-manager.js +58 -0
  61. package/dist/hook/hook-artifact-manager.js.map +1 -0
  62. package/dist/hook/hook-query.d.ts +25 -0
  63. package/dist/hook/hook-query.d.ts.map +1 -0
  64. package/dist/hook/hook-query.js +46 -0
  65. package/dist/hook/hook-query.js.map +1 -0
  66. package/dist/hook/igp-hook.d.ts +28 -0
  67. package/dist/hook/igp-hook.d.ts.map +1 -0
  68. package/dist/hook/igp-hook.js +242 -0
  69. package/dist/hook/igp-hook.js.map +1 -0
  70. package/dist/hook/merkle-tree-hook.d.ts +23 -0
  71. package/dist/hook/merkle-tree-hook.d.ts.map +1 -0
  72. package/dist/hook/merkle-tree-hook.js +46 -0
  73. package/dist/hook/merkle-tree-hook.js.map +1 -0
  74. package/dist/hyperlane/program-bytes.d.ts +20 -0
  75. package/dist/hyperlane/program-bytes.d.ts.map +1 -0
  76. package/dist/hyperlane/program-bytes.js +80534 -0
  77. package/dist/hyperlane/program-bytes.js.map +1 -0
  78. package/dist/index.d.ts +21 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +27 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/instructions/igp.d.ts +66 -0
  83. package/dist/instructions/igp.d.ts.map +1 -0
  84. package/dist/instructions/igp.js +168 -0
  85. package/dist/instructions/igp.js.map +1 -0
  86. package/dist/instructions/interfaces.d.ts +52 -0
  87. package/dist/instructions/interfaces.d.ts.map +1 -0
  88. package/dist/instructions/interfaces.js +126 -0
  89. package/dist/instructions/interfaces.js.map +1 -0
  90. package/dist/instructions/loader.d.ts +11 -0
  91. package/dist/instructions/loader.d.ts.map +1 -0
  92. package/dist/instructions/loader.js +24 -0
  93. package/dist/instructions/loader.js.map +1 -0
  94. package/dist/instructions/multisig-ism-message-id.d.ts +32 -0
  95. package/dist/instructions/multisig-ism-message-id.d.ts.map +1 -0
  96. package/dist/instructions/multisig-ism-message-id.js +105 -0
  97. package/dist/instructions/multisig-ism-message-id.js.map +1 -0
  98. package/dist/instructions/test-ism.d.ts +16 -0
  99. package/dist/instructions/test-ism.d.ts.map +1 -0
  100. package/dist/instructions/test-ism.js +47 -0
  101. package/dist/instructions/test-ism.js.map +1 -0
  102. package/dist/instructions/token.d.ts +62 -0
  103. package/dist/instructions/token.d.ts.map +1 -0
  104. package/dist/instructions/token.js +257 -0
  105. package/dist/instructions/token.js.map +1 -0
  106. package/dist/instructions/utils.d.ts +19 -0
  107. package/dist/instructions/utils.d.ts.map +1 -0
  108. package/dist/instructions/utils.js +36 -0
  109. package/dist/instructions/utils.js.map +1 -0
  110. package/dist/ism/ism-artifact-manager.d.ts +14 -0
  111. package/dist/ism/ism-artifact-manager.d.ts.map +1 -0
  112. package/dist/ism/ism-artifact-manager.js +49 -0
  113. package/dist/ism/ism-artifact-manager.js.map +1 -0
  114. package/dist/ism/ism-query.d.ts +22 -0
  115. package/dist/ism/ism-query.d.ts.map +1 -0
  116. package/dist/ism/ism-query.js +53 -0
  117. package/dist/ism/ism-query.js.map +1 -0
  118. package/dist/ism/multisig-ism.d.ts +33 -0
  119. package/dist/ism/multisig-ism.d.ts.map +1 -0
  120. package/dist/ism/multisig-ism.js +113 -0
  121. package/dist/ism/multisig-ism.js.map +1 -0
  122. package/dist/ism/test-ism.d.ts +20 -0
  123. package/dist/ism/test-ism.d.ts.map +1 -0
  124. package/dist/ism/test-ism.js +57 -0
  125. package/dist/ism/test-ism.js.map +1 -0
  126. package/dist/pda.d.ts +17 -0
  127. package/dist/pda.d.ts.map +1 -0
  128. package/dist/pda.js +118 -0
  129. package/dist/pda.js.map +1 -0
  130. package/dist/rpc.d.ts +9 -0
  131. package/dist/rpc.d.ts.map +1 -0
  132. package/dist/rpc.js +21 -0
  133. package/dist/rpc.js.map +1 -0
  134. package/dist/testing/index.d.ts +3 -0
  135. package/dist/testing/index.d.ts.map +1 -0
  136. package/dist/testing/index.js +3 -0
  137. package/dist/testing/index.js.map +1 -0
  138. package/dist/testing/setup.d.ts +33 -0
  139. package/dist/testing/setup.d.ts.map +1 -0
  140. package/dist/testing/setup.js +120 -0
  141. package/dist/testing/setup.js.map +1 -0
  142. package/dist/testing/solana-container.d.ts +32 -0
  143. package/dist/testing/solana-container.d.ts.map +1 -0
  144. package/dist/testing/solana-container.js +289 -0
  145. package/dist/testing/solana-container.js.map +1 -0
  146. package/dist/tests/collateral-token.e2e-test.d.ts +2 -0
  147. package/dist/tests/collateral-token.e2e-test.d.ts.map +1 -0
  148. package/dist/tests/collateral-token.e2e-test.js +112 -0
  149. package/dist/tests/collateral-token.e2e-test.js.map +1 -0
  150. package/dist/tests/deploy.e2e-test.d.ts +2 -0
  151. package/dist/tests/deploy.e2e-test.d.ts.map +1 -0
  152. package/dist/tests/deploy.e2e-test.js +76 -0
  153. package/dist/tests/deploy.e2e-test.js.map +1 -0
  154. package/dist/tests/hook.e2e-test.d.ts +2 -0
  155. package/dist/tests/hook.e2e-test.d.ts.map +1 -0
  156. package/dist/tests/hook.e2e-test.js +176 -0
  157. package/dist/tests/hook.e2e-test.js.map +1 -0
  158. package/dist/tests/ism.e2e-test.d.ts +2 -0
  159. package/dist/tests/ism.e2e-test.d.ts.map +1 -0
  160. package/dist/tests/ism.e2e-test.js +167 -0
  161. package/dist/tests/ism.e2e-test.js.map +1 -0
  162. package/dist/tests/native-token.e2e-test.d.ts +2 -0
  163. package/dist/tests/native-token.e2e-test.d.ts.map +1 -0
  164. package/dist/tests/native-token.e2e-test.js +93 -0
  165. package/dist/tests/native-token.e2e-test.js.map +1 -0
  166. package/dist/tests/provider.e2e-test.d.ts +2 -0
  167. package/dist/tests/provider.e2e-test.d.ts.map +1 -0
  168. package/dist/tests/provider.e2e-test.js +87 -0
  169. package/dist/tests/provider.e2e-test.js.map +1 -0
  170. package/dist/tests/read-token.e2e-test.d.ts +2 -0
  171. package/dist/tests/read-token.e2e-test.d.ts.map +1 -0
  172. package/dist/tests/read-token.e2e-test.js +79 -0
  173. package/dist/tests/read-token.e2e-test.js.map +1 -0
  174. package/dist/tests/scale.unit-test.d.ts +2 -0
  175. package/dist/tests/scale.unit-test.d.ts.map +1 -0
  176. package/dist/tests/scale.unit-test.js +65 -0
  177. package/dist/tests/scale.unit-test.js.map +1 -0
  178. package/dist/tests/synthetic-token.e2e-test.d.ts +2 -0
  179. package/dist/tests/synthetic-token.e2e-test.d.ts.map +1 -0
  180. package/dist/tests/synthetic-token.e2e-test.js +115 -0
  181. package/dist/tests/synthetic-token.e2e-test.js.map +1 -0
  182. package/dist/tests/warp-token-suite.d.ts +26 -0
  183. package/dist/tests/warp-token-suite.d.ts.map +1 -0
  184. package/dist/tests/warp-token-suite.js +208 -0
  185. package/dist/tests/warp-token-suite.js.map +1 -0
  186. package/dist/tx.d.ts +23 -0
  187. package/dist/tx.d.ts.map +1 -0
  188. package/dist/tx.js +43 -0
  189. package/dist/tx.js.map +1 -0
  190. package/dist/types.d.ts +50 -0
  191. package/dist/types.d.ts.map +1 -0
  192. package/dist/types.js +2 -0
  193. package/dist/types.js.map +1 -0
  194. package/dist/warp/collateral-token.d.ts +21 -0
  195. package/dist/warp/collateral-token.d.ts.map +1 -0
  196. package/dist/warp/collateral-token.js +129 -0
  197. package/dist/warp/collateral-token.js.map +1 -0
  198. package/dist/warp/native-token.d.ts +21 -0
  199. package/dist/warp/native-token.d.ts.map +1 -0
  200. package/dist/warp/native-token.js +99 -0
  201. package/dist/warp/native-token.js.map +1 -0
  202. package/dist/warp/synthetic-token.d.ts +21 -0
  203. package/dist/warp/synthetic-token.d.ts.map +1 -0
  204. package/dist/warp/synthetic-token.js +180 -0
  205. package/dist/warp/synthetic-token.js.map +1 -0
  206. package/dist/warp/types.d.ts +16 -0
  207. package/dist/warp/types.d.ts.map +1 -0
  208. package/dist/warp/types.js +2 -0
  209. package/dist/warp/types.js.map +1 -0
  210. package/dist/warp/warp-artifact-manager.d.ts +14 -0
  211. package/dist/warp/warp-artifact-manager.d.ts.map +1 -0
  212. package/dist/warp/warp-artifact-manager.js +52 -0
  213. package/dist/warp/warp-artifact-manager.js.map +1 -0
  214. package/dist/warp/warp-query.d.ts +30 -0
  215. package/dist/warp/warp-query.d.ts.map +1 -0
  216. package/dist/warp/warp-query.js +66 -0
  217. package/dist/warp/warp-query.js.map +1 -0
  218. package/dist/warp/warp-tx.d.ts +64 -0
  219. package/dist/warp/warp-tx.d.ts.map +1 -0
  220. package/dist/warp/warp-tx.js +291 -0
  221. package/dist/warp/warp-tx.js.map +1 -0
  222. package/package.json +76 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warp-token-suite.js","sourceRoot":"","sources":["../../src/tests/warp-token-suite.ts"],"names":[],"mappings":"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"}
package/dist/tx.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ import { type Blockhash, type Instruction, type TransactionSigner } from '@solana/kit';
2
+ import type { SvmInstruction, SvmTransaction } from './types.js';
3
+ export declare const DEFAULT_COMPUTE_UNITS = 400000;
4
+ export declare const DEFAULT_WRITE_CHUNK_SIZE = 880;
5
+ export declare const DEFAULT_PRIORITY_FEE_MICRO_LAMPORTS = 1;
6
+ export declare function getComputeBudgetInstructions(units?: number, microLamports?: number): SvmInstruction[];
7
+ export declare function buildTransactionMessage(params: {
8
+ instructions: SvmInstruction[];
9
+ feePayer: TransactionSigner;
10
+ recentBlockhash: Blockhash;
11
+ lastValidBlockHeight: bigint;
12
+ computeUnits?: number;
13
+ priorityFeeMicroLamports?: number;
14
+ }): Omit<import("@solana/kit").ExcludeTransactionMessageWithinSizeLimit<Omit<Omit<Omit<Readonly<{
15
+ instructions: readonly Instruction<string, readonly (import("@solana/kit").AccountLookupMeta<string, string> | import("@solana/kit").AccountMeta<string>)[]>[];
16
+ version: 0;
17
+ }>, "instructions"> & import("@solana/kit").TransactionMessageWithinSizeLimit & {
18
+ instructions: readonly [];
19
+ }, "feePayer"> & import("@solana/kit").TransactionMessageWithFeePayerSigner<string, TransactionSigner<string>>, "lifetimeConstraint"> & import("@solana/kit").TransactionMessageWithBlockhashLifetime>, "instructions"> & {
20
+ readonly instructions: readonly SvmInstruction[];
21
+ };
22
+ export declare function transactionToInstructions(tx: SvmTransaction): SvmInstruction[];
23
+ //# sourceMappingURL=tx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAKvB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAC7C,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,mCAAmC,IAAI,CAAC;AAyBrD,wBAAgB,4BAA4B,CAC1C,KAAK,GAAE,MAA8B,EACrC,aAAa,CAAC,EAAE,MAAM,GACrB,cAAc,EAAE,CAUlB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,eAAe,EAAE,SAAS,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;;;;;;;EAuBA;AAED,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,cAAc,GACjB,cAAc,EAAE,CAIlB"}
package/dist/tx.js ADDED
@@ -0,0 +1,43 @@
1
+ import { appendTransactionMessageInstructions, createTransactionMessage, setTransactionMessageFeePayerSigner, setTransactionMessageLifetimeUsingBlockhash, } from '@solana/kit';
2
+ export const DEFAULT_COMPUTE_UNITS = 400_000;
3
+ export const DEFAULT_WRITE_CHUNK_SIZE = 880;
4
+ export const DEFAULT_PRIORITY_FEE_MICRO_LAMPORTS = 1;
5
+ // Hand-rolled to avoid adding @solana-program/compute-budget as a dependency
6
+ // for two trivial instruction encoders.
7
+ const COMPUTE_BUDGET_PROGRAM_ID = 'ComputeBudget111111111111111111111111111111';
8
+ function createSetComputeUnitLimitInstruction(units) {
9
+ const data = new Uint8Array(5);
10
+ data[0] = 2;
11
+ new DataView(data.buffer).setUint32(1, units, true);
12
+ return { programAddress: COMPUTE_BUDGET_PROGRAM_ID, accounts: [], data };
13
+ }
14
+ function createSetComputeUnitPriceInstruction(microLamports) {
15
+ const data = new Uint8Array(9);
16
+ data[0] = 3;
17
+ new DataView(data.buffer).setBigUint64(1, microLamports, true);
18
+ return { programAddress: COMPUTE_BUDGET_PROGRAM_ID, accounts: [], data };
19
+ }
20
+ export function getComputeBudgetInstructions(units = DEFAULT_COMPUTE_UNITS, microLamports) {
21
+ const instructions = [
22
+ createSetComputeUnitLimitInstruction(units),
23
+ ];
24
+ if (microLamports !== undefined && microLamports > 0) {
25
+ instructions.push(createSetComputeUnitPriceInstruction(BigInt(microLamports)));
26
+ }
27
+ return instructions;
28
+ }
29
+ export function buildTransactionMessage(params) {
30
+ const { instructions, feePayer, recentBlockhash, lastValidBlockHeight, computeUnits = DEFAULT_COMPUTE_UNITS, priorityFeeMicroLamports, } = params;
31
+ const computeBudgetIxs = getComputeBudgetInstructions(computeUnits, priorityFeeMicroLamports);
32
+ const allInstructions = [...computeBudgetIxs, ...instructions];
33
+ const txMessage = createTransactionMessage({ version: 0 });
34
+ const withFeePayer = setTransactionMessageFeePayerSigner(feePayer, txMessage);
35
+ const withLifetime = setTransactionMessageLifetimeUsingBlockhash({ blockhash: recentBlockhash, lastValidBlockHeight }, withFeePayer);
36
+ return appendTransactionMessageInstructions(allInstructions, withLifetime);
37
+ }
38
+ export function transactionToInstructions(tx) {
39
+ const computeUnits = tx.computeUnits ?? DEFAULT_COMPUTE_UNITS;
40
+ const computeBudgetIxs = getComputeBudgetInstructions(computeUnits);
41
+ return [...computeBudgetIxs, ...tx.instructions];
42
+ }
43
+ //# sourceMappingURL=tx.js.map
package/dist/tx.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx.js","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,oCAAoC,EACpC,wBAAwB,EACxB,mCAAmC,EACnC,2CAA2C,GAC5C,MAAM,aAAa,CAAC;AAIrB,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAC5C,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAErD,6EAA6E;AAC7E,wCAAwC;AACxC,MAAM,yBAAyB,GAC7B,6CAAwD,CAAC;AAE3D,SAAS,oCAAoC,CAC3C,KAAa;IAEb,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACZ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACpD,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,oCAAoC,CAC3C,aAAqB;IAErB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACZ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC/D,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,QAAgB,qBAAqB,EACrC,aAAsB;IAEtB,MAAM,YAAY,GAAqB;QACrC,oCAAoC,CAAC,KAAK,CAAC;KAC5C,CAAC;IACF,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACrD,YAAY,CAAC,IAAI,CACf,oCAAoC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAC5D,CAAC;IACJ,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAOvC;IACC,MAAM,EACJ,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,YAAY,GAAG,qBAAqB,EACpC,wBAAwB,GACzB,GAAG,MAAM,CAAC;IAEX,MAAM,gBAAgB,GAAG,4BAA4B,CACnD,YAAY,EACZ,wBAAwB,CACzB,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,YAAY,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,wBAAwB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,mCAAmC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,2CAA2C,CAC9D,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,EACpD,YAAY,CACb,CAAC;IACF,OAAO,oCAAoC,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,EAAkB;IAElB,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,IAAI,qBAAqB,CAAC;IAC9D,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,YAAY,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,gBAAgB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { Address, Instruction, ProgramDerivedAddress, Rpc, SolanaRpcApi, TransactionSigner } from '@solana/kit';
2
+ import type { DeployedHookAddress } from '@hyperlane-xyz/provider-sdk/hook';
3
+ import type { DeployedIsmAddress } from '@hyperlane-xyz/provider-sdk/ism';
4
+ export type SvmInstruction = Instruction;
5
+ export type SvmRpc = Rpc<SolanaRpcApi>;
6
+ export interface SvmTransaction {
7
+ instructions: SvmInstruction[];
8
+ computeUnits?: number;
9
+ additionalSigners?: TransactionSigner[];
10
+ /** Skip preflight simulation.
11
+ * Some transactions that include account creation might fail the simulation check.
12
+ */
13
+ skipPreflight?: boolean;
14
+ }
15
+ export interface SvmReceipt {
16
+ signature: string;
17
+ slot?: bigint;
18
+ }
19
+ export type AnnotatedSvmTransaction = SvmTransaction & {
20
+ annotation?: string;
21
+ };
22
+ /**
23
+ * Specifies how to obtain a deployed program address:
24
+ * - `{ programId }` — use an already-deployed program
25
+ * - `{ programBytes }` — deploy a fresh binary via BPF Loader v3
26
+ */
27
+ export type SvmProgramTarget = {
28
+ programId: Address;
29
+ } | {
30
+ programBytes: Uint8Array;
31
+ };
32
+ /** ISM deployed data — the address IS the program. */
33
+ export interface SvmDeployedIsm extends DeployedIsmAddress {
34
+ programId: Address;
35
+ }
36
+ /** Base hook deployed data — references the owning program. */
37
+ export interface SvmDeployedHook extends DeployedHookAddress {
38
+ programId: Address;
39
+ }
40
+ /** IGP hook deployed data — account-level artifact within an IGP program. */
41
+ export interface SvmDeployedIgpHook extends SvmDeployedHook {
42
+ igpPda: Address;
43
+ overheadIgpPda?: Address;
44
+ }
45
+ export interface PdaWithBump {
46
+ pda: ProgramDerivedAddress;
47
+ address: Address;
48
+ bump: number;
49
+ }
50
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,qBAAqB,EACrB,GAAG,EACH,YAAY,EACZ,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC;AAEzC,MAAM,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;AAEvC,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACxC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,uBAAuB,GAAG,cAAc,GAAG;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,GACtB;IAAE,YAAY,EAAE,UAAU,CAAA;CAAE,CAAC;AAEjC,sDAAsD;AACtD,MAAM,WAAW,cAAe,SAAQ,kBAAkB;IACxD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,+DAA+D;AAC/D,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,6EAA6E;AAC7E,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,qBAAqB,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@hyperlane-xyz/provider-sdk/artifact';
2
+ import { type DeployedWarpAddress, type RawCollateralWarpArtifactConfig } from '@hyperlane-xyz/provider-sdk/warp';
3
+ import type { SvmSigner } from '../clients/signer.js';
4
+ import type { AnnotatedSvmTransaction, SvmReceipt, SvmRpc } from '../types.js';
5
+ import type { SvmWarpTokenConfig } from './types.js';
6
+ export declare class SvmCollateralTokenReader implements ArtifactReader<RawCollateralWarpArtifactConfig, DeployedWarpAddress> {
7
+ protected readonly rpc: SvmRpc;
8
+ constructor(rpc: SvmRpc);
9
+ read(programAddress: string): Promise<ArtifactDeployed<RawCollateralWarpArtifactConfig, DeployedWarpAddress>>;
10
+ }
11
+ export declare class SvmCollateralTokenWriter extends SvmCollateralTokenReader implements ArtifactWriter<RawCollateralWarpArtifactConfig, DeployedWarpAddress> {
12
+ private readonly config;
13
+ private readonly svmSigner;
14
+ constructor(config: SvmWarpTokenConfig, rpc: SvmRpc, svmSigner: SvmSigner);
15
+ create(artifact: ArtifactNew<RawCollateralWarpArtifactConfig>): Promise<[
16
+ ArtifactDeployed<RawCollateralWarpArtifactConfig, DeployedWarpAddress>,
17
+ SvmReceipt[]
18
+ ]>;
19
+ update(artifact: ArtifactDeployed<RawCollateralWarpArtifactConfig, DeployedWarpAddress>): Promise<AnnotatedSvmTransaction[]>;
20
+ }
21
+ //# sourceMappingURL=collateral-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateral-token.d.ts","sourceRoot":"","sources":["../../src/warp/collateral-token.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,KAAK,cAAc,EACpB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,+BAA+B,EACrC,MAAM,kCAAkC,CAAC;AAU1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAUtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAYrD,qBAAa,wBAAyB,YAAW,cAAc,CAC7D,+BAA+B,EAC/B,mBAAmB,CACpB;IACa,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;IAEpC,IAAI,CACR,cAAc,EAAE,MAAM,GACrB,OAAO,CACR,gBAAgB,CAAC,+BAA+B,EAAE,mBAAmB,CAAC,CACvE;CA2DF;AAED,qBAAa,wBACX,SAAQ,wBACR,YACE,cAAc,CAAC,+BAA+B,EAAE,mBAAmB,CAAC;IAGpE,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,MAAM,EAAE,kBAAkB,EAC3C,GAAG,EAAE,MAAM,EACM,SAAS,EAAE,SAAS;IAKjC,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,+BAA+B,CAAC,GACrD,OAAO,CACR;QACE,gBAAgB,CAAC,+BAA+B,EAAE,mBAAmB,CAAC;QACtE,UAAU,EAAE;KACb,CACF;IAgGK,MAAM,CACV,QAAQ,EAAE,gBAAgB,CACxB,+BAA+B,EAC/B,mBAAmB,CACpB,GACA,OAAO,CAAC,uBAAuB,EAAE,CAAC;CAkBtC"}
@@ -0,0 +1,129 @@
1
+ import { address as parseAddress } from '@solana/kit';
2
+ import { ArtifactState, } from '@hyperlane-xyz/provider-sdk/artifact';
3
+ import { TokenType, } from '@hyperlane-xyz/provider-sdk/warp';
4
+ import { ZERO_ADDRESS_HEX_32, assert, isNullish, isZeroishAddress, } from '@hyperlane-xyz/utils';
5
+ import { fetchMintMetadata, getMintDecimals } from '../accounts/mint.js';
6
+ import { decodeCollateralPlugin } from '../accounts/token.js';
7
+ import { RENT_SYSVAR_ADDRESS, SPL_TOKEN_PROGRAM_ADDRESS, TOKEN_2022_PROGRAM_ADDRESS, } from '../constants.js';
8
+ import { resolveProgram } from '../deploy/resolve-program.js';
9
+ import { getTokenInitInstruction } from '../instructions/token.js';
10
+ import { readonlyAccount, writableAccount } from '../instructions/utils.js';
11
+ import { deriveAtaPayerPda, deriveEscrowPda } from '../pda.js';
12
+ import { fetchTokenAccount, routerBytesToHex } from './warp-query.js';
13
+ import { applyPostInitConfig, assertLocalDecimals, buildBaseInitData, buildFundAtaPayerInstruction, computeWarpTokenUpdateInstructions, remoteDecimalsToScale, scaleToRemoteDecimals, } from './warp-tx.js';
14
+ export class SvmCollateralTokenReader {
15
+ rpc;
16
+ constructor(rpc) {
17
+ this.rpc = rpc;
18
+ }
19
+ async read(programAddress) {
20
+ const programId = parseAddress(programAddress);
21
+ const token = await fetchTokenAccount(this.rpc, programId);
22
+ assert(!isNullish(token), `Collateral token not initialized at ${programId}`);
23
+ const plugin = decodeCollateralPlugin(token.pluginData);
24
+ const remoteRouters = {};
25
+ for (const [domain, router] of token.remoteRouters.entries()) {
26
+ remoteRouters[domain] = { address: routerBytesToHex(router) };
27
+ }
28
+ const destinationGas = {};
29
+ for (const [domain, gas] of token.destinationGas.entries()) {
30
+ destinationGas[domain] = gas.toString();
31
+ }
32
+ const metadata = await fetchMintMetadata(this.rpc, plugin.mint);
33
+ assert(token.decimals === metadata.decimals, `Decimals mismatch for collateral token ${programId}: ` +
34
+ `warp route initialized with ${token.decimals} but mint reports ${metadata.decimals}`);
35
+ const config = {
36
+ type: TokenType.collateral,
37
+ owner: token.owner ?? ZERO_ADDRESS_HEX_32,
38
+ mailbox: token.mailbox,
39
+ token: plugin.mint,
40
+ name: metadata.name,
41
+ symbol: metadata.symbol,
42
+ decimals: token.decimals,
43
+ interchainSecurityModule: token.interchainSecurityModule
44
+ ? {
45
+ artifactState: ArtifactState.UNDERIVED,
46
+ deployed: { address: token.interchainSecurityModule },
47
+ }
48
+ : undefined,
49
+ hook: token.interchainGasPaymaster
50
+ ? {
51
+ artifactState: ArtifactState.UNDERIVED,
52
+ deployed: { address: token.interchainGasPaymaster.programId },
53
+ }
54
+ : undefined,
55
+ remoteRouters,
56
+ destinationGas,
57
+ scale: remoteDecimalsToScale(token.decimals, token.remoteDecimals),
58
+ };
59
+ return {
60
+ artifactState: ArtifactState.DEPLOYED,
61
+ config,
62
+ deployed: { address: programId },
63
+ };
64
+ }
65
+ }
66
+ export class SvmCollateralTokenWriter extends SvmCollateralTokenReader {
67
+ config;
68
+ svmSigner;
69
+ constructor(config, rpc, svmSigner) {
70
+ super(rpc);
71
+ this.config = config;
72
+ this.svmSigner = svmSigner;
73
+ }
74
+ async create(artifact) {
75
+ const receipts = [];
76
+ const tokenConfig = artifact.config;
77
+ // Validate the collateral mint before deploying
78
+ const collateralMint = parseAddress(tokenConfig.token);
79
+ const mintInfo = await this.rpc
80
+ .getAccountInfo(collateralMint, { encoding: 'base64' })
81
+ .send();
82
+ assert(!isNullish(mintInfo.value), `Mint account not found: ${collateralMint}`);
83
+ const splProgram = parseAddress(mintInfo.value.owner);
84
+ assert(splProgram === SPL_TOKEN_PROGRAM_ADDRESS ||
85
+ splProgram === TOKEN_2022_PROGRAM_ADDRESS, `Mint ${collateralMint} is not owned by SPL Token or Token-2022 (owner: ${splProgram})`);
86
+ const mintRawData = Buffer.from(mintInfo.value.data[0], 'base64');
87
+ const localDecimals = getMintDecimals(mintRawData);
88
+ assertLocalDecimals(localDecimals);
89
+ const remoteDecimals = scaleToRemoteDecimals(localDecimals, tokenConfig.scale);
90
+ // Deploy
91
+ const { programAddress, receipts: deployReceipts } = await resolveProgram(this.config.program, this.svmSigner, this.rpc, true);
92
+ receipts.push(...deployReceipts);
93
+ const { address: escrowPda } = await deriveEscrowPda(programAddress);
94
+ const { address: ataPayerPda } = await deriveAtaPayerPda(programAddress);
95
+ const initData = await buildBaseInitData(tokenConfig, localDecimals, remoteDecimals);
96
+ const initIx = await getTokenInitInstruction(programAddress, this.svmSigner.signer, initData, [
97
+ readonlyAccount(splProgram),
98
+ readonlyAccount(collateralMint),
99
+ readonlyAccount(RENT_SYSVAR_ADDRESS),
100
+ writableAccount(escrowPda),
101
+ writableAccount(ataPayerPda),
102
+ ]);
103
+ receipts.push(await this.svmSigner.send({
104
+ instructions: [initIx],
105
+ computeUnits: 400_000,
106
+ skipPreflight: true,
107
+ }));
108
+ const fundAtaPayerIx = await buildFundAtaPayerInstruction(this.rpc, this.svmSigner.signer.address, programAddress, this.config.ataPayerFundingAmount);
109
+ if (fundAtaPayerIx) {
110
+ receipts.push(await this.svmSigner.send({ instructions: [fundAtaPayerIx] }));
111
+ }
112
+ receipts.push(...(await applyPostInitConfig(this.svmSigner, programAddress, tokenConfig)));
113
+ return [
114
+ {
115
+ artifactState: ArtifactState.DEPLOYED,
116
+ config: { ...tokenConfig, decimals: localDecimals },
117
+ deployed: { address: programAddress },
118
+ },
119
+ receipts,
120
+ ];
121
+ }
122
+ async update(artifact) {
123
+ const programId = parseAddress(artifact.deployed.address);
124
+ const current = await this.read(programId);
125
+ assert(!isZeroishAddress(current.config.owner), `Cannot update collateral token ${programId}: token has no owner`);
126
+ return computeWarpTokenUpdateInstructions(current.config, artifact.config, programId, parseAddress(current.config.owner), this.rpc, `collateral token ${programId}`);
127
+ }
128
+ }
129
+ //# sourceMappingURL=collateral-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateral-token.js","sourceRoot":"","sources":["../../src/warp/collateral-token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@hyperlane-xyz/provider-sdk/artifact';
2
+ import { type DeployedWarpAddress, type RawNativeWarpArtifactConfig } from '@hyperlane-xyz/provider-sdk/warp';
3
+ import type { SvmSigner } from '../clients/signer.js';
4
+ import type { AnnotatedSvmTransaction, SvmReceipt, SvmRpc } from '../types.js';
5
+ import type { SvmWarpTokenConfig } from './types.js';
6
+ export declare class SvmNativeTokenReader implements ArtifactReader<RawNativeWarpArtifactConfig, DeployedWarpAddress> {
7
+ protected readonly rpc: SvmRpc;
8
+ constructor(rpc: SvmRpc);
9
+ read(programAddress: string): Promise<ArtifactDeployed<RawNativeWarpArtifactConfig, DeployedWarpAddress>>;
10
+ }
11
+ export declare class SvmNativeTokenWriter extends SvmNativeTokenReader implements ArtifactWriter<RawNativeWarpArtifactConfig, DeployedWarpAddress> {
12
+ private readonly config;
13
+ private readonly svmSigner;
14
+ constructor(config: SvmWarpTokenConfig, rpc: SvmRpc, svmSigner: SvmSigner);
15
+ create(artifact: ArtifactNew<RawNativeWarpArtifactConfig>): Promise<[
16
+ ArtifactDeployed<RawNativeWarpArtifactConfig, DeployedWarpAddress>,
17
+ SvmReceipt[]
18
+ ]>;
19
+ update(artifact: ArtifactDeployed<RawNativeWarpArtifactConfig, DeployedWarpAddress>): Promise<AnnotatedSvmTransaction[]>;
20
+ }
21
+ //# sourceMappingURL=native-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-token.d.ts","sourceRoot":"","sources":["../../src/warp/native-token.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,KAAK,cAAc,EACpB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EACjC,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAcrD,qBAAa,oBAAqB,YAAW,cAAc,CACzD,2BAA2B,EAC3B,mBAAmB,CACpB;IACa,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;IAEpC,IAAI,CACR,cAAc,EAAE,MAAM,GACrB,OAAO,CACR,gBAAgB,CAAC,2BAA2B,EAAE,mBAAmB,CAAC,CACnE;CA2CF;AAED,qBAAa,oBACX,SAAQ,oBACR,YAAW,cAAc,CAAC,2BAA2B,EAAE,mBAAmB,CAAC;IAGzE,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,MAAM,EAAE,kBAAkB,EAC3C,GAAG,EAAE,MAAM,EACM,SAAS,EAAE,SAAS;IAKjC,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,2BAA2B,CAAC,GACjD,OAAO,CACR;QACE,gBAAgB,CAAC,2BAA2B,EAAE,mBAAmB,CAAC;QAClE,UAAU,EAAE;KACb,CACF;IA6DK,MAAM,CACV,QAAQ,EAAE,gBAAgB,CACxB,2BAA2B,EAC3B,mBAAmB,CACpB,GACA,OAAO,CAAC,uBAAuB,EAAE,CAAC;CAkBtC"}
@@ -0,0 +1,99 @@
1
+ import { address as parseAddress } from '@solana/kit';
2
+ import { ArtifactState, } from '@hyperlane-xyz/provider-sdk/artifact';
3
+ import { TokenType, } from '@hyperlane-xyz/provider-sdk/warp';
4
+ import { ZERO_ADDRESS_HEX_32, assert, isNullish, isZeroishAddress, } from '@hyperlane-xyz/utils';
5
+ import { resolveProgram } from '../deploy/resolve-program.js';
6
+ import { getTokenInitInstruction } from '../instructions/token.js';
7
+ import { writableAccount } from '../instructions/utils.js';
8
+ import { deriveNativeCollateralPda } from '../pda.js';
9
+ import { fetchTokenAccount, routerBytesToHex } from './warp-query.js';
10
+ import { applyPostInitConfig, assertLocalDecimals, buildBaseInitData, computeWarpTokenUpdateInstructions, remoteDecimalsToScale, scaleToRemoteDecimals, } from './warp-tx.js';
11
+ /** Native SOL decimal precision. */
12
+ const SOL_DECIMALS = 9;
13
+ export class SvmNativeTokenReader {
14
+ rpc;
15
+ constructor(rpc) {
16
+ this.rpc = rpc;
17
+ }
18
+ async read(programAddress) {
19
+ const programId = parseAddress(programAddress);
20
+ const token = await fetchTokenAccount(this.rpc, programId);
21
+ assert(!isNullish(token), `Native token not initialized at ${programId}`);
22
+ const remoteRouters = {};
23
+ for (const [domain, router] of token.remoteRouters.entries()) {
24
+ remoteRouters[domain] = { address: routerBytesToHex(router) };
25
+ }
26
+ const destinationGas = {};
27
+ for (const [domain, gas] of token.destinationGas.entries()) {
28
+ destinationGas[domain] = gas.toString();
29
+ }
30
+ const config = {
31
+ type: TokenType.native,
32
+ owner: token.owner ?? ZERO_ADDRESS_HEX_32,
33
+ mailbox: token.mailbox,
34
+ interchainSecurityModule: token.interchainSecurityModule
35
+ ? {
36
+ artifactState: ArtifactState.UNDERIVED,
37
+ deployed: { address: token.interchainSecurityModule },
38
+ }
39
+ : undefined,
40
+ hook: token.interchainGasPaymaster
41
+ ? {
42
+ artifactState: ArtifactState.UNDERIVED,
43
+ deployed: { address: token.interchainGasPaymaster.programId },
44
+ }
45
+ : undefined,
46
+ remoteRouters,
47
+ destinationGas,
48
+ decimals: token.decimals,
49
+ scale: remoteDecimalsToScale(token.decimals, token.remoteDecimals),
50
+ };
51
+ return {
52
+ artifactState: ArtifactState.DEPLOYED,
53
+ config,
54
+ deployed: { address: programId },
55
+ };
56
+ }
57
+ }
58
+ export class SvmNativeTokenWriter extends SvmNativeTokenReader {
59
+ config;
60
+ svmSigner;
61
+ constructor(config, rpc, svmSigner) {
62
+ super(rpc);
63
+ this.config = config;
64
+ this.svmSigner = svmSigner;
65
+ }
66
+ async create(artifact) {
67
+ const receipts = [];
68
+ const tokenConfig = artifact.config;
69
+ const localDecimals = tokenConfig.decimals ?? SOL_DECIMALS;
70
+ assertLocalDecimals(localDecimals);
71
+ const remoteDecimals = scaleToRemoteDecimals(localDecimals, tokenConfig.scale);
72
+ const { programAddress, receipts: deployReceipts } = await resolveProgram(this.config.program, this.svmSigner, this.rpc, true);
73
+ receipts.push(...deployReceipts);
74
+ const { address: nativeCollateralPda } = await deriveNativeCollateralPda(programAddress);
75
+ const initData = await buildBaseInitData(tokenConfig, localDecimals, remoteDecimals);
76
+ const initIx = await getTokenInitInstruction(programAddress, this.svmSigner.signer, initData, [writableAccount(nativeCollateralPda)]);
77
+ receipts.push(await this.svmSigner.send({
78
+ instructions: [initIx],
79
+ computeUnits: 400_000,
80
+ skipPreflight: true,
81
+ }));
82
+ receipts.push(...(await applyPostInitConfig(this.svmSigner, programAddress, tokenConfig)));
83
+ return [
84
+ {
85
+ artifactState: ArtifactState.DEPLOYED,
86
+ config: { ...tokenConfig, decimals: localDecimals },
87
+ deployed: { address: programAddress },
88
+ },
89
+ receipts,
90
+ ];
91
+ }
92
+ async update(artifact) {
93
+ const programId = parseAddress(artifact.deployed.address);
94
+ const current = await this.read(programId);
95
+ assert(!isZeroishAddress(current.config.owner), `Cannot update native token ${programId}: token has no owner`);
96
+ return computeWarpTokenUpdateInstructions(current.config, artifact.config, programId, parseAddress(current.config.owner), this.rpc, `native token ${programId}`);
97
+ }
98
+ }
99
+ //# sourceMappingURL=native-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-token.js","sourceRoot":"","sources":["../../src/warp/native-token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@hyperlane-xyz/provider-sdk/artifact';
2
+ import { type DeployedWarpAddress, type RawSyntheticWarpArtifactConfig } from '@hyperlane-xyz/provider-sdk/warp';
3
+ import type { SvmSigner } from '../clients/signer.js';
4
+ import type { AnnotatedSvmTransaction, SvmReceipt, SvmRpc } from '../types.js';
5
+ import type { SvmWarpTokenConfig } from './types.js';
6
+ export declare class SvmSyntheticTokenReader implements ArtifactReader<RawSyntheticWarpArtifactConfig, DeployedWarpAddress> {
7
+ protected readonly rpc: SvmRpc;
8
+ constructor(rpc: SvmRpc);
9
+ read(programAddress: string): Promise<ArtifactDeployed<RawSyntheticWarpArtifactConfig, DeployedWarpAddress>>;
10
+ }
11
+ export declare class SvmSyntheticTokenWriter extends SvmSyntheticTokenReader implements ArtifactWriter<RawSyntheticWarpArtifactConfig, DeployedWarpAddress> {
12
+ private readonly config;
13
+ private readonly svmSigner;
14
+ constructor(config: SvmWarpTokenConfig, rpc: SvmRpc, svmSigner: SvmSigner);
15
+ create(artifact: ArtifactNew<RawSyntheticWarpArtifactConfig>): Promise<[
16
+ ArtifactDeployed<RawSyntheticWarpArtifactConfig, DeployedWarpAddress>,
17
+ SvmReceipt[]
18
+ ]>;
19
+ update(artifact: ArtifactDeployed<RawSyntheticWarpArtifactConfig, DeployedWarpAddress>): Promise<AnnotatedSvmTransaction[]>;
20
+ }
21
+ //# sourceMappingURL=synthetic-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-token.d.ts","sourceRoot":"","sources":["../../src/warp/synthetic-token.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,KAAK,cAAc,EACpB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,8BAA8B,EACpC,MAAM,kCAAkC,CAAC;AAe1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAiBtD,OAAO,KAAK,EACV,uBAAuB,EAEvB,UAAU,EACV,MAAM,EACP,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA+GrD,qBAAa,uBAAwB,YAAW,cAAc,CAC5D,8BAA8B,EAC9B,mBAAmB,CACpB;IACa,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;IAEpC,IAAI,CACR,cAAc,EAAE,MAAM,GACrB,OAAO,CACR,gBAAgB,CAAC,8BAA8B,EAAE,mBAAmB,CAAC,CACtE;CAoDF;AAED,qBAAa,uBACX,SAAQ,uBACR,YAAW,cAAc,CAAC,8BAA8B,EAAE,mBAAmB,CAAC;IAG5E,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,MAAM,EAAE,kBAAkB,EAC3C,GAAG,EAAE,MAAM,EACM,SAAS,EAAE,SAAS;IAKjC,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,8BAA8B,CAAC,GACpD,OAAO,CACR;QACE,gBAAgB,CAAC,8BAA8B,EAAE,mBAAmB,CAAC;QACrE,UAAU,EAAE;KACb,CACF;IAuIK,MAAM,CACV,QAAQ,EAAE,gBAAgB,CACxB,8BAA8B,EAC9B,mBAAmB,CACpB,GACA,OAAO,CAAC,uBAAuB,EAAE,CAAC;CAkBtC"}