@wormhole-foundation/sdk-solana-core 0.5.0-alpha.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 (259) hide show
  1. package/dist/cjs/anchor-idl/wormhole.json +611 -0
  2. package/dist/cjs/core.d.ts +32 -0
  3. package/dist/cjs/core.d.ts.map +1 -0
  4. package/dist/cjs/core.js +229 -0
  5. package/dist/cjs/core.js.map +1 -0
  6. package/dist/cjs/index.d.ts +4 -0
  7. package/dist/cjs/index.d.ts.map +1 -0
  8. package/dist/cjs/index.js +37 -0
  9. package/dist/cjs/index.js.map +1 -0
  10. package/dist/cjs/postMessageLayout.d.ts +65 -0
  11. package/dist/cjs/postMessageLayout.d.ts.map +1 -0
  12. package/dist/cjs/postMessageLayout.js +20 -0
  13. package/dist/cjs/postMessageLayout.js.map +1 -0
  14. package/dist/cjs/types.d.ts +612 -0
  15. package/dist/cjs/types.d.ts.map +1 -0
  16. package/dist/cjs/types.js +3 -0
  17. package/dist/cjs/types.js.map +1 -0
  18. package/dist/cjs/utils/accounts/claim.d.ts +5 -0
  19. package/dist/cjs/utils/accounts/claim.d.ts.map +1 -0
  20. package/dist/cjs/utils/accounts/claim.js +31 -0
  21. package/dist/cjs/utils/accounts/claim.js.map +1 -0
  22. package/dist/cjs/utils/accounts/config.d.ts +18 -0
  23. package/dist/cjs/utils/accounts/config.d.ts.map +1 -0
  24. package/dist/cjs/utils/accounts/config.js +52 -0
  25. package/dist/cjs/utils/accounts/config.js.map +1 -0
  26. package/dist/cjs/utils/accounts/emitter.d.ts +10 -0
  27. package/dist/cjs/utils/accounts/emitter.d.ts.map +1 -0
  28. package/dist/cjs/utils/accounts/emitter.js +22 -0
  29. package/dist/cjs/utils/accounts/emitter.js.map +1 -0
  30. package/dist/cjs/utils/accounts/feeCollector.d.ts +3 -0
  31. package/dist/cjs/utils/accounts/feeCollector.d.ts.map +1 -0
  32. package/dist/cjs/utils/accounts/feeCollector.js +9 -0
  33. package/dist/cjs/utils/accounts/feeCollector.js.map +1 -0
  34. package/dist/cjs/utils/accounts/guardianSet.d.ts +13 -0
  35. package/dist/cjs/utils/accounts/guardianSet.d.ts.map +1 -0
  36. package/dist/cjs/utils/accounts/guardianSet.js +49 -0
  37. package/dist/cjs/utils/accounts/guardianSet.js.map +1 -0
  38. package/dist/cjs/utils/accounts/index.d.ts +10 -0
  39. package/dist/cjs/utils/accounts/index.d.ts.map +1 -0
  40. package/dist/cjs/utils/accounts/index.js +26 -0
  41. package/dist/cjs/utils/accounts/index.js.map +1 -0
  42. package/dist/cjs/utils/accounts/postedVaa.d.ts +4 -0
  43. package/dist/cjs/utils/accounts/postedVaa.d.ts.map +1 -0
  44. package/dist/cjs/utils/accounts/postedVaa.js +9 -0
  45. package/dist/cjs/utils/accounts/postedVaa.js.map +1 -0
  46. package/dist/cjs/utils/accounts/sequence.d.ts +13 -0
  47. package/dist/cjs/utils/accounts/sequence.d.ts.map +1 -0
  48. package/dist/cjs/utils/accounts/sequence.js +42 -0
  49. package/dist/cjs/utils/accounts/sequence.js.map +1 -0
  50. package/dist/cjs/utils/accounts/signatureSet.d.ts +11 -0
  51. package/dist/cjs/utils/accounts/signatureSet.d.ts.map +1 -0
  52. package/dist/cjs/utils/accounts/signatureSet.js +31 -0
  53. package/dist/cjs/utils/accounts/signatureSet.js.map +1 -0
  54. package/dist/cjs/utils/accounts/upgrade.d.ts +3 -0
  55. package/dist/cjs/utils/accounts/upgrade.d.ts.map +1 -0
  56. package/dist/cjs/utils/accounts/upgrade.js +9 -0
  57. package/dist/cjs/utils/accounts/upgrade.js.map +1 -0
  58. package/dist/cjs/utils/coder/accounts.d.ts +26 -0
  59. package/dist/cjs/utils/coder/accounts.d.ts.map +1 -0
  60. package/dist/cjs/utils/coder/accounts.js +64 -0
  61. package/dist/cjs/utils/coder/accounts.js.map +1 -0
  62. package/dist/cjs/utils/coder/events.d.ts +7 -0
  63. package/dist/cjs/utils/coder/events.d.ts.map +1 -0
  64. package/dist/cjs/utils/coder/events.js +11 -0
  65. package/dist/cjs/utils/coder/events.js.map +1 -0
  66. package/dist/cjs/utils/coder/idl.d.ts +8 -0
  67. package/dist/cjs/utils/coder/idl.d.ts.map +1 -0
  68. package/dist/cjs/utils/coder/idl.js +114 -0
  69. package/dist/cjs/utils/coder/idl.js.map +1 -0
  70. package/dist/cjs/utils/coder/index.d.ts +16 -0
  71. package/dist/cjs/utils/coder/index.d.ts.map +1 -0
  72. package/dist/cjs/utils/coder/index.js +26 -0
  73. package/dist/cjs/utils/coder/index.js.map +1 -0
  74. package/dist/cjs/utils/coder/instruction.d.ts +26 -0
  75. package/dist/cjs/utils/coder/instruction.d.ts.map +1 -0
  76. package/dist/cjs/utils/coder/instruction.js +110 -0
  77. package/dist/cjs/utils/coder/instruction.js.map +1 -0
  78. package/dist/cjs/utils/coder/state.d.ts +8 -0
  79. package/dist/cjs/utils/coder/state.d.ts.map +1 -0
  80. package/dist/cjs/utils/coder/state.js +14 -0
  81. package/dist/cjs/utils/coder/state.js.map +1 -0
  82. package/dist/cjs/utils/coder/types.d.ts +8 -0
  83. package/dist/cjs/utils/coder/types.d.ts.map +1 -0
  84. package/dist/cjs/utils/coder/types.js +14 -0
  85. package/dist/cjs/utils/coder/types.js.map +1 -0
  86. package/dist/cjs/utils/cpi.d.ts +52 -0
  87. package/dist/cjs/utils/cpi.d.ts.map +1 -0
  88. package/dist/cjs/utils/cpi.js +48 -0
  89. package/dist/cjs/utils/cpi.js.map +1 -0
  90. package/dist/cjs/utils/index.d.ts +5 -0
  91. package/dist/cjs/utils/index.d.ts.map +1 -0
  92. package/dist/cjs/utils/index.js +21 -0
  93. package/dist/cjs/utils/index.js.map +1 -0
  94. package/dist/cjs/utils/instructions/feeTransfer.d.ts +3 -0
  95. package/dist/cjs/utils/instructions/feeTransfer.d.ts.map +1 -0
  96. package/dist/cjs/utils/instructions/feeTransfer.js +14 -0
  97. package/dist/cjs/utils/instructions/feeTransfer.js.map +1 -0
  98. package/dist/cjs/utils/instructions/governance.d.ts +52 -0
  99. package/dist/cjs/utils/instructions/governance.d.ts.map +1 -0
  100. package/dist/cjs/utils/instructions/governance.js +111 -0
  101. package/dist/cjs/utils/instructions/governance.js.map +1 -0
  102. package/dist/cjs/utils/instructions/index.d.ts +7 -0
  103. package/dist/cjs/utils/instructions/index.d.ts.map +1 -0
  104. package/dist/cjs/utils/instructions/index.js +23 -0
  105. package/dist/cjs/utils/instructions/index.js.map +1 -0
  106. package/dist/cjs/utils/instructions/initialize.d.ts +14 -0
  107. package/dist/cjs/utils/instructions/initialize.d.ts.map +1 -0
  108. package/dist/cjs/utils/instructions/initialize.js +37 -0
  109. package/dist/cjs/utils/instructions/initialize.js.map +1 -0
  110. package/dist/cjs/utils/instructions/postMessage.d.ts +16 -0
  111. package/dist/cjs/utils/instructions/postMessage.d.ts.map +1 -0
  112. package/dist/cjs/utils/instructions/postMessage.js +41 -0
  113. package/dist/cjs/utils/instructions/postMessage.js.map +1 -0
  114. package/dist/cjs/utils/instructions/postVaa.d.ts +28 -0
  115. package/dist/cjs/utils/instructions/postVaa.d.ts.map +1 -0
  116. package/dist/cjs/utils/instructions/postVaa.js +53 -0
  117. package/dist/cjs/utils/instructions/postVaa.js.map +1 -0
  118. package/dist/cjs/utils/instructions/secp256k1.d.ts +30 -0
  119. package/dist/cjs/utils/instructions/secp256k1.d.ts.map +1 -0
  120. package/dist/cjs/utils/instructions/secp256k1.js +111 -0
  121. package/dist/cjs/utils/instructions/secp256k1.js.map +1 -0
  122. package/dist/cjs/utils/instructions/verifySignature.d.ts +32 -0
  123. package/dist/cjs/utils/instructions/verifySignature.d.ts.map +1 -0
  124. package/dist/cjs/utils/instructions/verifySignature.js +94 -0
  125. package/dist/cjs/utils/instructions/verifySignature.js.map +1 -0
  126. package/dist/cjs/utils/program.d.ts +8 -0
  127. package/dist/cjs/utils/program.d.ts.map +1 -0
  128. package/dist/cjs/utils/program.js +24 -0
  129. package/dist/cjs/utils/program.js.map +1 -0
  130. package/dist/esm/anchor-idl/wormhole.json +611 -0
  131. package/dist/esm/core.d.ts +32 -0
  132. package/dist/esm/core.d.ts.map +1 -0
  133. package/dist/esm/core.js +225 -0
  134. package/dist/esm/core.js.map +1 -0
  135. package/dist/esm/index.d.ts +4 -0
  136. package/dist/esm/index.d.ts.map +1 -0
  137. package/dist/esm/index.js +8 -0
  138. package/dist/esm/index.js.map +1 -0
  139. package/dist/esm/postMessageLayout.d.ts +65 -0
  140. package/dist/esm/postMessageLayout.d.ts.map +1 -0
  141. package/dist/esm/postMessageLayout.js +17 -0
  142. package/dist/esm/postMessageLayout.js.map +1 -0
  143. package/dist/esm/types.d.ts +612 -0
  144. package/dist/esm/types.d.ts.map +1 -0
  145. package/dist/esm/types.js +2 -0
  146. package/dist/esm/types.js.map +1 -0
  147. package/dist/esm/utils/accounts/claim.d.ts +5 -0
  148. package/dist/esm/utils/accounts/claim.d.ts.map +1 -0
  149. package/dist/esm/utils/accounts/claim.js +26 -0
  150. package/dist/esm/utils/accounts/claim.js.map +1 -0
  151. package/dist/esm/utils/accounts/config.d.ts +18 -0
  152. package/dist/esm/utils/accounts/config.d.ts.map +1 -0
  153. package/dist/esm/utils/accounts/config.js +45 -0
  154. package/dist/esm/utils/accounts/config.js.map +1 -0
  155. package/dist/esm/utils/accounts/emitter.d.ts +10 -0
  156. package/dist/esm/utils/accounts/emitter.d.ts.map +1 -0
  157. package/dist/esm/utils/accounts/emitter.js +16 -0
  158. package/dist/esm/utils/accounts/emitter.js.map +1 -0
  159. package/dist/esm/utils/accounts/feeCollector.d.ts +3 -0
  160. package/dist/esm/utils/accounts/feeCollector.d.ts.map +1 -0
  161. package/dist/esm/utils/accounts/feeCollector.js +5 -0
  162. package/dist/esm/utils/accounts/feeCollector.js.map +1 -0
  163. package/dist/esm/utils/accounts/guardianSet.d.ts +13 -0
  164. package/dist/esm/utils/accounts/guardianSet.d.ts.map +1 -0
  165. package/dist/esm/utils/accounts/guardianSet.js +43 -0
  166. package/dist/esm/utils/accounts/guardianSet.js.map +1 -0
  167. package/dist/esm/utils/accounts/index.d.ts +10 -0
  168. package/dist/esm/utils/accounts/index.d.ts.map +1 -0
  169. package/dist/esm/utils/accounts/index.js +10 -0
  170. package/dist/esm/utils/accounts/index.js.map +1 -0
  171. package/dist/esm/utils/accounts/postedVaa.d.ts +4 -0
  172. package/dist/esm/utils/accounts/postedVaa.d.ts.map +1 -0
  173. package/dist/esm/utils/accounts/postedVaa.js +5 -0
  174. package/dist/esm/utils/accounts/postedVaa.js.map +1 -0
  175. package/dist/esm/utils/accounts/sequence.d.ts +13 -0
  176. package/dist/esm/utils/accounts/sequence.d.ts.map +1 -0
  177. package/dist/esm/utils/accounts/sequence.js +36 -0
  178. package/dist/esm/utils/accounts/sequence.js.map +1 -0
  179. package/dist/esm/utils/accounts/signatureSet.d.ts +11 -0
  180. package/dist/esm/utils/accounts/signatureSet.d.ts.map +1 -0
  181. package/dist/esm/utils/accounts/signatureSet.js +26 -0
  182. package/dist/esm/utils/accounts/signatureSet.js.map +1 -0
  183. package/dist/esm/utils/accounts/upgrade.d.ts +3 -0
  184. package/dist/esm/utils/accounts/upgrade.d.ts.map +1 -0
  185. package/dist/esm/utils/accounts/upgrade.js +5 -0
  186. package/dist/esm/utils/accounts/upgrade.js.map +1 -0
  187. package/dist/esm/utils/coder/accounts.d.ts +26 -0
  188. package/dist/esm/utils/coder/accounts.d.ts.map +1 -0
  189. package/dist/esm/utils/coder/accounts.js +58 -0
  190. package/dist/esm/utils/coder/accounts.js.map +1 -0
  191. package/dist/esm/utils/coder/events.d.ts +7 -0
  192. package/dist/esm/utils/coder/events.d.ts.map +1 -0
  193. package/dist/esm/utils/coder/events.js +7 -0
  194. package/dist/esm/utils/coder/events.js.map +1 -0
  195. package/dist/esm/utils/coder/idl.d.ts +8 -0
  196. package/dist/esm/utils/coder/idl.d.ts.map +1 -0
  197. package/dist/esm/utils/coder/idl.js +87 -0
  198. package/dist/esm/utils/coder/idl.js.map +1 -0
  199. package/dist/esm/utils/coder/index.d.ts +16 -0
  200. package/dist/esm/utils/coder/index.d.ts.map +1 -0
  201. package/dist/esm/utils/coder/index.js +21 -0
  202. package/dist/esm/utils/coder/index.js.map +1 -0
  203. package/dist/esm/utils/coder/instruction.d.ts +26 -0
  204. package/dist/esm/utils/coder/instruction.d.ts.map +1 -0
  205. package/dist/esm/utils/coder/instruction.js +83 -0
  206. package/dist/esm/utils/coder/instruction.js.map +1 -0
  207. package/dist/esm/utils/coder/state.d.ts +8 -0
  208. package/dist/esm/utils/coder/state.d.ts.map +1 -0
  209. package/dist/esm/utils/coder/state.js +10 -0
  210. package/dist/esm/utils/coder/state.js.map +1 -0
  211. package/dist/esm/utils/coder/types.d.ts +8 -0
  212. package/dist/esm/utils/coder/types.d.ts.map +1 -0
  213. package/dist/esm/utils/coder/types.js +10 -0
  214. package/dist/esm/utils/coder/types.js.map +1 -0
  215. package/dist/esm/utils/cpi.d.ts +52 -0
  216. package/dist/esm/utils/cpi.d.ts.map +1 -0
  217. package/dist/esm/utils/cpi.js +43 -0
  218. package/dist/esm/utils/cpi.js.map +1 -0
  219. package/dist/esm/utils/index.d.ts +5 -0
  220. package/dist/esm/utils/index.d.ts.map +1 -0
  221. package/dist/esm/utils/index.js +5 -0
  222. package/dist/esm/utils/index.js.map +1 -0
  223. package/dist/esm/utils/instructions/feeTransfer.d.ts +3 -0
  224. package/dist/esm/utils/instructions/feeTransfer.d.ts.map +1 -0
  225. package/dist/esm/utils/instructions/feeTransfer.js +10 -0
  226. package/dist/esm/utils/instructions/feeTransfer.js.map +1 -0
  227. package/dist/esm/utils/instructions/governance.d.ts +52 -0
  228. package/dist/esm/utils/instructions/governance.d.ts.map +1 -0
  229. package/dist/esm/utils/instructions/governance.js +100 -0
  230. package/dist/esm/utils/instructions/governance.js.map +1 -0
  231. package/dist/esm/utils/instructions/index.d.ts +7 -0
  232. package/dist/esm/utils/instructions/index.d.ts.map +1 -0
  233. package/dist/esm/utils/instructions/index.js +7 -0
  234. package/dist/esm/utils/instructions/index.js.map +1 -0
  235. package/dist/esm/utils/instructions/initialize.d.ts +14 -0
  236. package/dist/esm/utils/instructions/initialize.d.ts.map +1 -0
  237. package/dist/esm/utils/instructions/initialize.js +29 -0
  238. package/dist/esm/utils/instructions/initialize.js.map +1 -0
  239. package/dist/esm/utils/instructions/postMessage.d.ts +16 -0
  240. package/dist/esm/utils/instructions/postMessage.d.ts.map +1 -0
  241. package/dist/esm/utils/instructions/postMessage.js +36 -0
  242. package/dist/esm/utils/instructions/postMessage.js.map +1 -0
  243. package/dist/esm/utils/instructions/postVaa.d.ts +28 -0
  244. package/dist/esm/utils/instructions/postVaa.d.ts.map +1 -0
  245. package/dist/esm/utils/instructions/postVaa.js +45 -0
  246. package/dist/esm/utils/instructions/postVaa.js.map +1 -0
  247. package/dist/esm/utils/instructions/secp256k1.d.ts +30 -0
  248. package/dist/esm/utils/instructions/secp256k1.d.ts.map +1 -0
  249. package/dist/esm/utils/instructions/secp256k1.js +106 -0
  250. package/dist/esm/utils/instructions/secp256k1.js.map +1 -0
  251. package/dist/esm/utils/instructions/verifySignature.d.ts +32 -0
  252. package/dist/esm/utils/instructions/verifySignature.d.ts.map +1 -0
  253. package/dist/esm/utils/instructions/verifySignature.js +89 -0
  254. package/dist/esm/utils/instructions/verifySignature.js.map +1 -0
  255. package/dist/esm/utils/program.d.ts +8 -0
  256. package/dist/esm/utils/program.d.ts.map +1 -0
  257. package/dist/esm/utils/program.js +15 -0
  258. package/dist/esm/utils/program.js.map +1 -0
  259. package/package.json +58 -0
@@ -0,0 +1,225 @@
1
+ import { Keypair, Transaction, } from '@solana/web3.js';
2
+ import { createVAA, deserializeLayout, toChain, toChainId, } from '@wormhole-foundation/sdk-connect';
3
+ import { SolanaAddress, SolanaPlatform, SolanaUnsignedTransaction, } from '@wormhole-foundation/sdk-solana';
4
+ import { createBridgeFeeTransferInstruction, createPostMessageInstruction, createPostVaaInstruction, createReadOnlyWormholeProgramInterface, createVerifySignaturesInstructions, derivePostedVaaKey, getWormholeBridgeData, } from './utils';
5
+ import { postMessageLayout } from './postMessageLayout';
6
+ const SOLANA_SEQ_LOG = 'Program log: Sequence: ';
7
+ export class SolanaWormholeCore {
8
+ network;
9
+ chain;
10
+ connection;
11
+ contracts;
12
+ chainId;
13
+ coreBridge;
14
+ address;
15
+ bridgeData;
16
+ constructor(network, chain, connection, contracts) {
17
+ this.network = network;
18
+ this.chain = chain;
19
+ this.connection = connection;
20
+ this.contracts = contracts;
21
+ this.chainId = toChainId(chain);
22
+ const coreBridgeAddress = contracts.coreBridge;
23
+ if (!coreBridgeAddress)
24
+ throw new Error(`CoreBridge contract Address for chain ${chain} not found`);
25
+ this.address = coreBridgeAddress;
26
+ this.coreBridge = createReadOnlyWormholeProgramInterface(coreBridgeAddress, connection);
27
+ }
28
+ static async fromRpc(connection, config) {
29
+ const [network, chain] = await SolanaPlatform.chainFromRpc(connection);
30
+ const conf = config[chain];
31
+ if (conf.network !== network)
32
+ throw new Error(`Network mismatch for chain ${chain}: ${conf.network} != ${network}`);
33
+ return new SolanaWormholeCore(network, chain, connection, config[chain].contracts);
34
+ }
35
+ async ensureBridgeConfig() {
36
+ // cache lookups since this should not change frequently
37
+ if (!this.bridgeData)
38
+ this.bridgeData = await getWormholeBridgeData(this.connection, this.coreBridge.programId);
39
+ }
40
+ async getMessageFee() {
41
+ await this.ensureBridgeConfig();
42
+ return this.bridgeData.config.fee;
43
+ }
44
+ async getGuardianSetIndex() {
45
+ await this.ensureBridgeConfig();
46
+ return this.bridgeData.guardianSetIndex;
47
+ }
48
+ async *publishMessage(sender, message, nonce, consistencyLevel) {
49
+ const messageAccount = Keypair.generate();
50
+ const payer = new SolanaAddress(sender).unwrap();
51
+ const postMsgIx = createPostMessageInstruction(this.connection, this.coreBridge.programId, payer, messageAccount.publicKey, message, nonce, consistencyLevel);
52
+ const fee = await this.getMessageFee();
53
+ const feeTransferIx = createBridgeFeeTransferInstruction(this.coreBridge.programId, payer, fee);
54
+ const transaction = new Transaction();
55
+ transaction.feePayer = payer;
56
+ transaction.add(feeTransferIx, postMsgIx);
57
+ yield this.createUnsignedTx({ transaction, signers: [messageAccount] }, 'Core.PublishMessage');
58
+ }
59
+ async *verifyMessage(sender, vaa) {
60
+ yield* this.postVaa(sender, vaa);
61
+ }
62
+ async *postVaa(sender, vaa) {
63
+ const postedVaaAddress = derivePostedVaaKey(this.coreBridge.programId, Buffer.from(vaa.hash));
64
+ // no need to do anything else, this vaa is posted
65
+ const isPosted = await this.connection.getAccountInfo(postedVaaAddress);
66
+ if (isPosted)
67
+ return;
68
+ const senderAddr = new SolanaAddress(sender).unwrap();
69
+ const signatureSet = Keypair.generate();
70
+ const verifySignaturesInstructions = await createVerifySignaturesInstructions(this.connection, this.coreBridge.programId, senderAddr, vaa, signatureSet.publicKey);
71
+ // Create a new transaction for every 2 instructions
72
+ for (let i = 0; i < verifySignaturesInstructions.length; i += 2) {
73
+ const verifySigTx = new Transaction().add(...verifySignaturesInstructions.slice(i, i + 2));
74
+ verifySigTx.feePayer = senderAddr;
75
+ yield this.createUnsignedTx({ transaction: verifySigTx, signers: [signatureSet] }, 'Core.VerifySignature', true);
76
+ }
77
+ // Finally create the VAA posting transaction
78
+ const postVaaTx = new Transaction().add(createPostVaaInstruction(this.connection, this.coreBridge.programId, senderAddr, vaa, signatureSet.publicKey));
79
+ postVaaTx.feePayer = senderAddr;
80
+ yield this.createUnsignedTx({ transaction: postVaaTx }, 'Core.PostVAA');
81
+ }
82
+ static parseSequenceFromLog(coreBridgeAddress, transaction) {
83
+ if (!transaction || !transaction.meta?.innerInstructions[0]?.instructions)
84
+ return null;
85
+ const instructions = transaction.meta?.innerInstructions[0].instructions;
86
+ const accounts = transaction.transaction.message.staticAccountKeys;
87
+ // find the instruction where the programId equals the Wormhole ProgramId and the emitter equals the Token Bridge
88
+ const bridgeIx = instructions.filter((i) => {
89
+ const programId = accounts[i.programIdIndex].toString();
90
+ return programId === coreBridgeAddress;
91
+ });
92
+ if (bridgeIx.length < 1)
93
+ return null;
94
+ if (accounts.length < 3)
95
+ return null;
96
+ const emitter = new SolanaAddress(accounts[bridgeIx[0].accounts[2]]).toUniversalAddress();
97
+ const sequence = transaction.meta?.logMessages
98
+ ?.filter((msg) => msg.startsWith(SOLANA_SEQ_LOG))?.[0]
99
+ ?.replace(SOLANA_SEQ_LOG, '');
100
+ if (!sequence)
101
+ return null;
102
+ return [emitter, BigInt(sequence)];
103
+ }
104
+ async getMessageAccountKeys(response) {
105
+ // Resolve any LUT accounts if necessary
106
+ let accounts;
107
+ // a string type is indicative of a 'legacy' transaction
108
+ if (typeof response.transaction.message.version !== 'string') {
109
+ if (response.meta.loadedAddresses) {
110
+ accounts = response.transaction.message.getAccountKeys({
111
+ accountKeysFromLookups: response.meta.loadedAddresses,
112
+ });
113
+ }
114
+ else {
115
+ const atls = await Promise.all(response.transaction.message.addressTableLookups.map(async (atl) => {
116
+ const lut = await this.connection.getAddressLookupTable(atl.accountKey);
117
+ if (!lut || !lut.value)
118
+ throw new Error('Could not resolve lookup table: ' + atl.accountKey.toBase58());
119
+ return lut.value;
120
+ }));
121
+ accounts = response.transaction.message.getAccountKeys({
122
+ addressLookupTableAccounts: atls,
123
+ });
124
+ }
125
+ }
126
+ else {
127
+ accounts = response.transaction.message.getAccountKeys();
128
+ }
129
+ return accounts;
130
+ }
131
+ async findBridgeInstructions(accounts, response) {
132
+ // find the instruction where the programId equals the Wormhole ProgramId
133
+ const iix = response
134
+ .meta.innerInstructions[0].instructions.filter((i) => {
135
+ const programId = accounts.get(i.programIdIndex).toString();
136
+ const wormholeCore = this.coreBridge.programId.toString();
137
+ return programId === wormholeCore;
138
+ })
139
+ .map((ix) => {
140
+ // map over inner ixs to put it in the same format as the compiled instructions
141
+ // from the message
142
+ return {
143
+ programIdIndex: ix.programIdIndex,
144
+ accountKeyIndexes: ix.accounts,
145
+ };
146
+ });
147
+ const cix = response.transaction.message.compiledInstructions.filter((i) => {
148
+ const programId = accounts.get(i.programIdIndex).toString();
149
+ const wormholeCore = this.coreBridge.programId.toString();
150
+ return programId === wormholeCore;
151
+ });
152
+ // find the instruction where the programId equals the Wormhole ProgramId
153
+ return [...iix, ...cix];
154
+ }
155
+ async parsePostMessageAccount(messageAccount) {
156
+ const acctInfo = await this.connection.getAccountInfo(messageAccount);
157
+ if (!acctInfo?.data)
158
+ throw new Error('No data found in message account');
159
+ const { timestamp, emitterAddress, emitterChain, consistencyLevel, sequence, nonce, payload, } = deserializeLayout(postMessageLayout, new Uint8Array(acctInfo?.data));
160
+ return createVAA('Uint8Array', {
161
+ guardianSet: await this.getGuardianSetIndex(),
162
+ emitterChain: toChain(emitterChain),
163
+ timestamp,
164
+ emitterAddress,
165
+ consistencyLevel,
166
+ sequence,
167
+ nonce,
168
+ payload,
169
+ signatures: [],
170
+ });
171
+ }
172
+ async parseTransaction(txid) {
173
+ const response = await this.connection.getTransaction(txid, {
174
+ maxSupportedTransactionVersion: 0,
175
+ });
176
+ if (!response || !response.meta || !response.meta.innerInstructions)
177
+ throw new Error('transaction not found');
178
+ // The sequence is frequently found in the log, pull from there if we can
179
+ const loggedSeq = SolanaWormholeCore.parseSequenceFromLog(this.coreBridge.programId.toBase58(), response);
180
+ if (loggedSeq)
181
+ return [
182
+ {
183
+ chain: this.chain,
184
+ emitter: loggedSeq[0],
185
+ sequence: loggedSeq[1],
186
+ },
187
+ ];
188
+ // Otherwise we need to get it from the message account
189
+ const accounts = await this.getMessageAccountKeys(response);
190
+ const bridgeInstructions = await this.findBridgeInstructions(accounts, response);
191
+ if (!bridgeInstructions || bridgeInstructions.length === 0)
192
+ throw new Error('no bridge messages found');
193
+ const messagePromises = bridgeInstructions.map(async (bi) => {
194
+ const messageAcct = accounts.get(bi.accountKeyIndexes[1]);
195
+ const vaa = await this.parsePostMessageAccount(messageAcct);
196
+ return {
197
+ chain: vaa.emitterChain,
198
+ emitter: vaa.emitterAddress,
199
+ sequence: vaa.sequence,
200
+ };
201
+ });
202
+ return await Promise.all(messagePromises);
203
+ }
204
+ async parseMessages(txid) {
205
+ const response = await this.connection.getTransaction(txid, {
206
+ maxSupportedTransactionVersion: 0,
207
+ });
208
+ if (!response || !response.meta || !response.meta.innerInstructions)
209
+ throw new Error('transaction not found');
210
+ // Otherwise we need to get it from the message account
211
+ const accounts = await this.getMessageAccountKeys(response);
212
+ const bridgeInstructions = await this.findBridgeInstructions(accounts, response);
213
+ if (!bridgeInstructions || bridgeInstructions.length === 0)
214
+ throw new Error('no bridge messages found');
215
+ const messagePromises = bridgeInstructions.map(async (bi) => {
216
+ const messageAcct = accounts.get(bi.accountKeyIndexes[1]);
217
+ return await this.parsePostMessageAccount(messageAcct);
218
+ });
219
+ return await Promise.all(messagePromises);
220
+ }
221
+ createUnsignedTx(txReq, description, parallelizable = false) {
222
+ return new SolanaUnsignedTransaction(txReq, this.network, this.chain, description, parallelizable);
223
+ }
224
+ }
225
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './core';
2
+ export * from './types';
3
+ export * as utils from './utils';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { _platform } from '@wormhole-foundation/sdk-solana';
2
+ import { registerProtocol } from '@wormhole-foundation/sdk-connect';
3
+ import { SolanaWormholeCore } from './core';
4
+ registerProtocol(_platform, 'WormholeCore', SolanaWormholeCore);
5
+ export * from './core';
6
+ export * from './types';
7
+ export * as utils from './utils';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAE5C,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC;AAEhE,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC"}
@@ -0,0 +1,65 @@
1
+ /** Binary layout for postMessage account */
2
+ export declare const postMessageLayout: readonly [{
3
+ readonly name: "discriminator";
4
+ readonly binary: "bytes";
5
+ readonly size: 4;
6
+ }, {
7
+ readonly name: "consistencyLevel";
8
+ readonly binary: "uint";
9
+ readonly size: 1;
10
+ readonly endianness: "little";
11
+ }, {
12
+ readonly binary: "bytes";
13
+ readonly size: 32;
14
+ readonly custom: {
15
+ to: (val: Uint8Array) => import("@wormhole-foundation/sdk-connect").UniversalAddress;
16
+ from: (val: import("@wormhole-foundation/sdk-connect").UniversalAddress) => Uint8Array;
17
+ };
18
+ readonly name: "emitterAuthority";
19
+ }, {
20
+ readonly name: "messageStatus";
21
+ readonly binary: "uint";
22
+ readonly size: 1;
23
+ readonly endianness: "little";
24
+ }, {
25
+ readonly name: "gap";
26
+ readonly binary: "uint";
27
+ readonly size: 3;
28
+ }, {
29
+ readonly name: "timestamp";
30
+ readonly binary: "uint";
31
+ readonly size: 4;
32
+ readonly endianness: "little";
33
+ }, {
34
+ readonly name: "nonce";
35
+ readonly binary: "uint";
36
+ readonly size: 4;
37
+ readonly endianness: "little";
38
+ }, {
39
+ readonly name: "sequence";
40
+ readonly binary: "uint";
41
+ readonly size: 8;
42
+ readonly endianness: "little";
43
+ }, {
44
+ readonly name: "emitterChain";
45
+ readonly binary: "uint";
46
+ readonly size: 2;
47
+ readonly endianness: "little";
48
+ }, {
49
+ readonly binary: "bytes";
50
+ readonly size: 32;
51
+ readonly custom: {
52
+ to: (val: Uint8Array) => import("@wormhole-foundation/sdk-connect").UniversalAddress;
53
+ from: (val: import("@wormhole-foundation/sdk-connect").UniversalAddress) => Uint8Array;
54
+ };
55
+ readonly name: "emitterAddress";
56
+ }, {
57
+ readonly name: "payloadLength";
58
+ readonly binary: "uint";
59
+ readonly size: 4;
60
+ readonly endianness: "little";
61
+ }, {
62
+ readonly name: "payload";
63
+ readonly binary: "bytes";
64
+ }];
65
+ //# sourceMappingURL=postMessageLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postMessageLayout.d.ts","sourceRoot":"","sources":["../../src/postMessageLayout.ts"],"names":[],"mappings":"AAEA,4CAA4C;AAC5C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAaH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { layoutItems } from '@wormhole-foundation/sdk-connect';
2
+ /** Binary layout for postMessage account */
3
+ export const postMessageLayout = [
4
+ { name: 'discriminator', binary: 'bytes', size: 4 },
5
+ { name: 'consistencyLevel', binary: 'uint', size: 1, endianness: 'little' },
6
+ { name: 'emitterAuthority', ...layoutItems.universalAddressItem },
7
+ { name: 'messageStatus', binary: 'uint', size: 1, endianness: 'little' },
8
+ { name: 'gap', binary: 'uint', size: 3 },
9
+ { name: 'timestamp', binary: 'uint', size: 4, endianness: 'little' },
10
+ { name: 'nonce', binary: 'uint', size: 4, endianness: 'little' },
11
+ { name: 'sequence', binary: 'uint', size: 8, endianness: 'little' },
12
+ { name: 'emitterChain', binary: 'uint', size: 2, endianness: 'little' },
13
+ { name: 'emitterAddress', ...layoutItems.universalAddressItem },
14
+ { name: 'payloadLength', binary: 'uint', size: 4, endianness: 'little' },
15
+ { name: 'payload', binary: 'bytes' },
16
+ ];
17
+ //# sourceMappingURL=postMessageLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postMessageLayout.js","sourceRoot":"","sources":["../../src/postMessageLayout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEvE,4CAA4C;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE;IACnD,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IAC3E,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,WAAW,CAAC,oBAAoB,EAAE;IACjE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IACxE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;IACxC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IACpE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IAChE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IACnE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IACvE,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,WAAW,CAAC,oBAAoB,EAAE;IAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IACxE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;CACX,CAAC"}