@wormhole-foundation/sdk-solana-core 4.22.0 → 5.0.0-beta.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 (130) hide show
  1. package/package.json +11 -29
  2. package/dist/cjs/core.d.ts +0 -34
  3. package/dist/cjs/core.d.ts.map +0 -1
  4. package/dist/cjs/core.js +0 -252
  5. package/dist/cjs/core.js.map +0 -1
  6. package/dist/cjs/index.d.ts +0 -5
  7. package/dist/cjs/index.d.ts.map +0 -1
  8. package/dist/cjs/index.js +0 -38
  9. package/dist/cjs/index.js.map +0 -1
  10. package/dist/cjs/package.json +0 -1
  11. package/dist/cjs/postMessageLayout.d.ts +0 -67
  12. package/dist/cjs/postMessageLayout.d.ts.map +0 -1
  13. package/dist/cjs/postMessageLayout.js +0 -24
  14. package/dist/cjs/postMessageLayout.js.map +0 -1
  15. package/dist/cjs/types.d.ts +0 -613
  16. package/dist/cjs/types.d.ts.map +0 -1
  17. package/dist/cjs/types.js +0 -615
  18. package/dist/cjs/types.js.map +0 -1
  19. package/dist/cjs/utils/accounts/claim.d.ts +0 -6
  20. package/dist/cjs/utils/accounts/claim.d.ts.map +0 -1
  21. package/dist/cjs/utils/accounts/claim.js +0 -31
  22. package/dist/cjs/utils/accounts/claim.js.map +0 -1
  23. package/dist/cjs/utils/accounts/config.d.ts +0 -19
  24. package/dist/cjs/utils/accounts/config.d.ts.map +0 -1
  25. package/dist/cjs/utils/accounts/config.js +0 -52
  26. package/dist/cjs/utils/accounts/config.js.map +0 -1
  27. package/dist/cjs/utils/accounts/emitter.d.ts +0 -10
  28. package/dist/cjs/utils/accounts/emitter.d.ts.map +0 -1
  29. package/dist/cjs/utils/accounts/emitter.js +0 -22
  30. package/dist/cjs/utils/accounts/emitter.js.map +0 -1
  31. package/dist/cjs/utils/accounts/feeCollector.d.ts +0 -3
  32. package/dist/cjs/utils/accounts/feeCollector.d.ts.map +0 -1
  33. package/dist/cjs/utils/accounts/feeCollector.js +0 -9
  34. package/dist/cjs/utils/accounts/feeCollector.js.map +0 -1
  35. package/dist/cjs/utils/accounts/guardianSet.d.ts +0 -14
  36. package/dist/cjs/utils/accounts/guardianSet.d.ts.map +0 -1
  37. package/dist/cjs/utils/accounts/guardianSet.js +0 -49
  38. package/dist/cjs/utils/accounts/guardianSet.js.map +0 -1
  39. package/dist/cjs/utils/accounts/index.d.ts +0 -10
  40. package/dist/cjs/utils/accounts/index.d.ts.map +0 -1
  41. package/dist/cjs/utils/accounts/index.js +0 -26
  42. package/dist/cjs/utils/accounts/index.js.map +0 -1
  43. package/dist/cjs/utils/accounts/postedVaa.d.ts +0 -5
  44. package/dist/cjs/utils/accounts/postedVaa.d.ts.map +0 -1
  45. package/dist/cjs/utils/accounts/postedVaa.js +0 -9
  46. package/dist/cjs/utils/accounts/postedVaa.js.map +0 -1
  47. package/dist/cjs/utils/accounts/sequence.d.ts +0 -15
  48. package/dist/cjs/utils/accounts/sequence.d.ts.map +0 -1
  49. package/dist/cjs/utils/accounts/sequence.js +0 -42
  50. package/dist/cjs/utils/accounts/sequence.js.map +0 -1
  51. package/dist/cjs/utils/accounts/signatureSet.d.ts +0 -12
  52. package/dist/cjs/utils/accounts/signatureSet.d.ts.map +0 -1
  53. package/dist/cjs/utils/accounts/signatureSet.js +0 -31
  54. package/dist/cjs/utils/accounts/signatureSet.js.map +0 -1
  55. package/dist/cjs/utils/accounts/upgrade.d.ts +0 -3
  56. package/dist/cjs/utils/accounts/upgrade.d.ts.map +0 -1
  57. package/dist/cjs/utils/accounts/upgrade.js +0 -9
  58. package/dist/cjs/utils/accounts/upgrade.js.map +0 -1
  59. package/dist/cjs/utils/coder/accounts.d.ts +0 -27
  60. package/dist/cjs/utils/coder/accounts.d.ts.map +0 -1
  61. package/dist/cjs/utils/coder/accounts.js +0 -64
  62. package/dist/cjs/utils/coder/accounts.js.map +0 -1
  63. package/dist/cjs/utils/coder/events.d.ts +0 -7
  64. package/dist/cjs/utils/coder/events.d.ts.map +0 -1
  65. package/dist/cjs/utils/coder/events.js +0 -11
  66. package/dist/cjs/utils/coder/events.js.map +0 -1
  67. package/dist/cjs/utils/coder/idl.d.ts +0 -9
  68. package/dist/cjs/utils/coder/idl.d.ts.map +0 -1
  69. package/dist/cjs/utils/coder/idl.js +0 -120
  70. package/dist/cjs/utils/coder/idl.js.map +0 -1
  71. package/dist/cjs/utils/coder/index.d.ts +0 -16
  72. package/dist/cjs/utils/coder/index.d.ts.map +0 -1
  73. package/dist/cjs/utils/coder/index.js +0 -39
  74. package/dist/cjs/utils/coder/index.js.map +0 -1
  75. package/dist/cjs/utils/coder/instruction.d.ts +0 -27
  76. package/dist/cjs/utils/coder/instruction.d.ts.map +0 -1
  77. package/dist/cjs/utils/coder/instruction.js +0 -110
  78. package/dist/cjs/utils/coder/instruction.js.map +0 -1
  79. package/dist/cjs/utils/coder/state.d.ts +0 -9
  80. package/dist/cjs/utils/coder/state.d.ts.map +0 -1
  81. package/dist/cjs/utils/coder/state.js +0 -14
  82. package/dist/cjs/utils/coder/state.js.map +0 -1
  83. package/dist/cjs/utils/coder/types.d.ts +0 -9
  84. package/dist/cjs/utils/coder/types.d.ts.map +0 -1
  85. package/dist/cjs/utils/coder/types.js +0 -14
  86. package/dist/cjs/utils/coder/types.js.map +0 -1
  87. package/dist/cjs/utils/cpi.d.ts +0 -52
  88. package/dist/cjs/utils/cpi.d.ts.map +0 -1
  89. package/dist/cjs/utils/cpi.js +0 -48
  90. package/dist/cjs/utils/cpi.js.map +0 -1
  91. package/dist/cjs/utils/index.d.ts +0 -5
  92. package/dist/cjs/utils/index.d.ts.map +0 -1
  93. package/dist/cjs/utils/index.js +0 -21
  94. package/dist/cjs/utils/index.js.map +0 -1
  95. package/dist/cjs/utils/instructions/feeTransfer.d.ts +0 -3
  96. package/dist/cjs/utils/instructions/feeTransfer.d.ts.map +0 -1
  97. package/dist/cjs/utils/instructions/feeTransfer.js +0 -14
  98. package/dist/cjs/utils/instructions/feeTransfer.js.map +0 -1
  99. package/dist/cjs/utils/instructions/governance.d.ts +0 -53
  100. package/dist/cjs/utils/instructions/governance.d.ts.map +0 -1
  101. package/dist/cjs/utils/instructions/governance.js +0 -111
  102. package/dist/cjs/utils/instructions/governance.js.map +0 -1
  103. package/dist/cjs/utils/instructions/index.d.ts +0 -7
  104. package/dist/cjs/utils/instructions/index.d.ts.map +0 -1
  105. package/dist/cjs/utils/instructions/index.js +0 -23
  106. package/dist/cjs/utils/instructions/index.js.map +0 -1
  107. package/dist/cjs/utils/instructions/initialize.d.ts +0 -16
  108. package/dist/cjs/utils/instructions/initialize.d.ts.map +0 -1
  109. package/dist/cjs/utils/instructions/initialize.js +0 -37
  110. package/dist/cjs/utils/instructions/initialize.js.map +0 -1
  111. package/dist/cjs/utils/instructions/postMessage.d.ts +0 -17
  112. package/dist/cjs/utils/instructions/postMessage.d.ts.map +0 -1
  113. package/dist/cjs/utils/instructions/postMessage.js +0 -41
  114. package/dist/cjs/utils/instructions/postMessage.js.map +0 -1
  115. package/dist/cjs/utils/instructions/postVaa.d.ts +0 -29
  116. package/dist/cjs/utils/instructions/postVaa.d.ts.map +0 -1
  117. package/dist/cjs/utils/instructions/postVaa.js +0 -53
  118. package/dist/cjs/utils/instructions/postVaa.js.map +0 -1
  119. package/dist/cjs/utils/instructions/secp256k1.d.ts +0 -31
  120. package/dist/cjs/utils/instructions/secp256k1.d.ts.map +0 -1
  121. package/dist/cjs/utils/instructions/secp256k1.js +0 -111
  122. package/dist/cjs/utils/instructions/secp256k1.js.map +0 -1
  123. package/dist/cjs/utils/instructions/verifySignature.d.ts +0 -33
  124. package/dist/cjs/utils/instructions/verifySignature.d.ts.map +0 -1
  125. package/dist/cjs/utils/instructions/verifySignature.js +0 -91
  126. package/dist/cjs/utils/instructions/verifySignature.js.map +0 -1
  127. package/dist/cjs/utils/program.d.ts +0 -9
  128. package/dist/cjs/utils/program.d.ts.map +0 -1
  129. package/dist/cjs/utils/program.js +0 -21
  130. package/dist/cjs/utils/program.js.map +0 -1
@@ -1,91 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getVerifySignatureAccounts = exports.createVerifySignaturesInstructions = void 0;
4
- const web3_js_1 = require("@solana/web3.js");
5
- const program_js_1 = require("../program.js");
6
- const index_js_1 = require("./../accounts/index.js");
7
- const secp256k1_js_1 = require("./secp256k1.js");
8
- const MAX_LEN_GUARDIAN_KEYS = 19;
9
- /**
10
- * Signatures are batched in groups of 7 due to instruction
11
- * data limits. These signatures are passed through to the Secp256k1
12
- * program to verify that the guardian public keys can be recovered.
13
- * This instruction is paired with `verify_signatures` to validate the
14
- * pubkey recovery.
15
- *
16
- * There are at most three pairs of instructions created.
17
- *
18
- * https://github.com/certusone/wormhole/blob/main/solana/bridge/program/src/api/verify_signature.rs
19
- *
20
- *
21
- * @param {Connection} connection - Solana web3 connection
22
- * @param {PublicKeyInitData} wormholeProgramId - wormhole program address
23
- * @param {PublicKeyInitData} payer - transaction signer address
24
- * @param {SignedVaa | ParsedVaa} vaa - either signed VAA bytes or parsed VAA
25
- * @param {PublicKeyInitData} signatureSet - address to account of verified signatures
26
- * @param {web3.ConfirmOptions} [options] - Solana confirmation options
27
- */
28
- async function createVerifySignaturesInstructions(connection, wormholeProgramId, payer, vaa, signatureSet, commitment) {
29
- const guardianSetIndex = vaa.guardianSet;
30
- const guardianSetData = await (0, index_js_1.getGuardianSet)(connection, wormholeProgramId, guardianSetIndex, commitment);
31
- const guardianSignatures = vaa.signatures;
32
- const guardianKeys = guardianSetData.keys;
33
- const batchSize = 7;
34
- const instructions = [];
35
- for (let i = 0; i < Math.ceil(guardianSignatures.length / batchSize); ++i) {
36
- const start = i * batchSize;
37
- const end = Math.min(guardianSignatures.length, (i + 1) * batchSize);
38
- const signatureStatus = new Array(MAX_LEN_GUARDIAN_KEYS).fill(-1);
39
- const signatures = [];
40
- const keys = [];
41
- for (let j = 0; j < end - start; ++j) {
42
- const item = guardianSignatures.at(j + start);
43
- signatures.push(Buffer.from(item.signature.encode()));
44
- keys.push(guardianKeys.at(item.guardianIndex));
45
- signatureStatus[item.guardianIndex] = j;
46
- }
47
- instructions.push((0, secp256k1_js_1.createSecp256k1Instruction)(signatures, keys, Buffer.from(vaa.hash)));
48
- instructions.push(createVerifySignaturesInstruction(connection, wormholeProgramId, payer, vaa, signatureSet, signatureStatus));
49
- }
50
- return instructions;
51
- }
52
- exports.createVerifySignaturesInstructions = createVerifySignaturesInstructions;
53
- /**
54
- * Make {@link TransactionInstruction} for `verify_signatures` instruction.
55
- *
56
- * This is used in {@link createVerifySignaturesInstructions} for each batch of signatures being verified.
57
- * `signatureSet` is a {@link @solana/web3.Keypair} generated outside of this method, used
58
- * for writing signatures and the message hash to.
59
- *
60
- * https://github.com/certusone/wormhole/blob/main/solana/bridge/program/src/api/verify_signature.rs
61
- *
62
- * @param {PublicKeyInitData} wormholeProgramId - wormhole program address
63
- * @param {PublicKeyInitData} payer - transaction signer address
64
- * @param {SignedVaa | ParsedVaa} vaa - either signed VAA (Buffer) or parsed VAA
65
- * @param {PublicKeyInitData} signatureSet - key for signature set account
66
- * @param {Buffer} signatureStatus - array of guardian indices
67
- *
68
- */
69
- function createVerifySignaturesInstruction(connection, wormholeProgramId, payer, vaa, signatureSet, signatureStatus) {
70
- const methods = (0, program_js_1.createReadOnlyWormholeProgramInterface)(wormholeProgramId, connection).methods.verifySignatures(signatureStatus);
71
- // @ts-ignore
72
- return methods._ixFn(...methods._args, {
73
- accounts: getVerifySignatureAccounts(wormholeProgramId, payer, signatureSet, vaa),
74
- signers: undefined,
75
- remainingAccounts: undefined,
76
- preInstructions: undefined,
77
- postInstructions: undefined,
78
- });
79
- }
80
- function getVerifySignatureAccounts(wormholeProgramId, payer, signatureSet, vaa) {
81
- return {
82
- payer: new web3_js_1.PublicKey(payer),
83
- guardianSet: (0, index_js_1.deriveGuardianSetKey)(wormholeProgramId, vaa.guardianSet),
84
- signatureSet: new web3_js_1.PublicKey(signatureSet),
85
- instructions: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
86
- rent: web3_js_1.SYSVAR_RENT_PUBKEY,
87
- systemProgram: web3_js_1.SystemProgram.programId,
88
- };
89
- }
90
- exports.getVerifySignatureAccounts = getVerifySignatureAccounts;
91
- //# sourceMappingURL=verifySignature.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifySignature.js","sourceRoot":"","sources":["../../../../src/utils/instructions/verifySignature.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { Connection, PublicKeyInitData } from '@solana/web3.js';
2
- import type { Provider } from '@coral-xyz/anchor';
3
- import { Program } from '@coral-xyz/anchor';
4
- import { WormholeCoder } from './coder/index.js';
5
- import { type Wormhole } from '../types.js';
6
- export declare function createWormholeProgramInterface(programId: PublicKeyInitData, provider?: Provider): Program<Wormhole>;
7
- export declare function createReadOnlyWormholeProgramInterface(programId: PublicKeyInitData, connection?: Connection): Program<Wormhole>;
8
- export declare function coder(): WormholeCoder;
9
- //# sourceMappingURL=program.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../../src/utils/program.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,KAAK,QAAQ,EAAO,MAAM,aAAa,CAAC;AAEjD,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,QAAQ,CAAC,CAOnB;AAED,wBAAgB,sCAAsC,CACpD,SAAS,EAAE,iBAAiB,EAC5B,UAAU,CAAC,EAAE,UAAU,GACtB,OAAO,CAAC,QAAQ,CAAC,CAKnB;AAED,wBAAgB,KAAK,IAAI,aAAa,CAErC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.coder = exports.createReadOnlyWormholeProgramInterface = exports.createWormholeProgramInterface = void 0;
4
- const web3_js_1 = require("@solana/web3.js");
5
- const anchor_1 = require("@coral-xyz/anchor");
6
- const sdk_solana_1 = require("@wormhole-foundation/sdk-solana");
7
- const index_js_1 = require("./coder/index.js");
8
- const types_js_1 = require("../types.js");
9
- function createWormholeProgramInterface(programId, provider) {
10
- return new anchor_1.Program(types_js_1.IDL, new web3_js_1.PublicKey(programId), provider === undefined ? { connection: null } : provider, coder());
11
- }
12
- exports.createWormholeProgramInterface = createWormholeProgramInterface;
13
- function createReadOnlyWormholeProgramInterface(programId, connection) {
14
- return createWormholeProgramInterface(programId, sdk_solana_1.utils.createReadOnlyProvider(connection));
15
- }
16
- exports.createReadOnlyWormholeProgramInterface = createReadOnlyWormholeProgramInterface;
17
- function coder() {
18
- return new index_js_1.WormholeCoder(types_js_1.IDL);
19
- }
20
- exports.coder = coder;
21
- //# sourceMappingURL=program.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/utils/program.ts"],"names":[],"mappings":";;;AACA,6CAA4C;AAE5C,8CAA4C;AAC5C,gEAAwD;AACxD,+CAAiD;AACjD,0CAAiD;AAEjD,SAAgB,8BAA8B,CAC5C,SAA4B,EAC5B,QAAmB;IAEnB,OAAO,IAAI,gBAAO,CAChB,cAAe,EACf,IAAI,mBAAS,CAAC,SAAS,CAAC,EACxB,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAE,EAAE,UAAU,EAAE,IAAI,EAAU,CAAC,CAAC,CAAC,QAAQ,EACjE,KAAK,EAAE,CACR,CAAC;AACJ,CAAC;AAVD,wEAUC;AAED,SAAgB,sCAAsC,CACpD,SAA4B,EAC5B,UAAuB;IAEvB,OAAO,8BAA8B,CACnC,SAAS,EACT,kBAAK,CAAC,sBAAsB,CAAC,UAAU,CAAC,CACzC,CAAC;AACJ,CAAC;AARD,wFAQC;AAED,SAAgB,KAAK;IACnB,OAAO,IAAI,wBAAa,CAAC,cAAe,CAAC,CAAC;AAC5C,CAAC;AAFD,sBAEC"}