@atomiqlabs/chain-solana 13.5.13 → 13.5.14

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 (131) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +73 -73
  3. package/dist/index.d.ts +81 -81
  4. package/dist/index.js +102 -102
  5. package/dist/node/index.d.ts +9 -9
  6. package/dist/node/index.js +13 -13
  7. package/dist/solana/SolanaChainType.d.ts +15 -15
  8. package/dist/solana/SolanaChainType.js +2 -2
  9. package/dist/solana/SolanaChains.d.ts +12 -12
  10. package/dist/solana/SolanaChains.js +45 -45
  11. package/dist/solana/SolanaInitializer.d.ts +94 -94
  12. package/dist/solana/SolanaInitializer.js +174 -174
  13. package/dist/solana/btcrelay/SolanaBtcRelay.d.ts +222 -222
  14. package/dist/solana/btcrelay/SolanaBtcRelay.js +455 -455
  15. package/dist/solana/btcrelay/headers/SolanaBtcHeader.d.ts +84 -84
  16. package/dist/solana/btcrelay/headers/SolanaBtcHeader.js +70 -70
  17. package/dist/solana/btcrelay/headers/SolanaBtcStoredHeader.d.ts +92 -92
  18. package/dist/solana/btcrelay/headers/SolanaBtcStoredHeader.js +109 -109
  19. package/dist/solana/btcrelay/program/programIdl.json +671 -671
  20. package/dist/solana/chain/SolanaAction.d.ts +26 -26
  21. package/dist/solana/chain/SolanaAction.js +87 -87
  22. package/dist/solana/chain/SolanaChainInterface.d.ts +224 -224
  23. package/dist/solana/chain/SolanaChainInterface.js +275 -275
  24. package/dist/solana/chain/SolanaModule.d.ts +14 -14
  25. package/dist/solana/chain/SolanaModule.js +13 -13
  26. package/dist/solana/chain/modules/SolanaAddresses.d.ts +8 -8
  27. package/dist/solana/chain/modules/SolanaAddresses.js +22 -22
  28. package/dist/solana/chain/modules/SolanaBlocks.d.ts +32 -32
  29. package/dist/solana/chain/modules/SolanaBlocks.js +78 -78
  30. package/dist/solana/chain/modules/SolanaEvents.d.ts +68 -68
  31. package/dist/solana/chain/modules/SolanaEvents.js +238 -238
  32. package/dist/solana/chain/modules/SolanaFees.d.ts +189 -189
  33. package/dist/solana/chain/modules/SolanaFees.js +434 -434
  34. package/dist/solana/chain/modules/SolanaSignatures.d.ts +24 -24
  35. package/dist/solana/chain/modules/SolanaSignatures.js +39 -39
  36. package/dist/solana/chain/modules/SolanaSlots.d.ts +33 -33
  37. package/dist/solana/chain/modules/SolanaSlots.js +72 -72
  38. package/dist/solana/chain/modules/SolanaTokens.d.ts +123 -123
  39. package/dist/solana/chain/modules/SolanaTokens.js +242 -242
  40. package/dist/solana/chain/modules/SolanaTransactions.d.ts +149 -149
  41. package/dist/solana/chain/modules/SolanaTransactions.js +445 -445
  42. package/dist/solana/connection/ConnectionWithRetries.d.ts +35 -35
  43. package/dist/solana/connection/ConnectionWithRetries.js +86 -71
  44. package/dist/solana/events/SolanaChainEvents.d.ts +45 -45
  45. package/dist/solana/events/SolanaChainEvents.js +108 -108
  46. package/dist/solana/events/SolanaChainEventsBrowser.d.ts +205 -205
  47. package/dist/solana/events/SolanaChainEventsBrowser.js +404 -404
  48. package/dist/solana/program/SolanaProgramBase.d.ts +73 -73
  49. package/dist/solana/program/SolanaProgramBase.js +54 -54
  50. package/dist/solana/program/SolanaProgramModule.d.ts +8 -8
  51. package/dist/solana/program/SolanaProgramModule.js +11 -11
  52. package/dist/solana/program/modules/SolanaProgramEvents.d.ts +53 -53
  53. package/dist/solana/program/modules/SolanaProgramEvents.js +117 -117
  54. package/dist/solana/swaps/SolanaSwapData.d.ts +333 -333
  55. package/dist/solana/swaps/SolanaSwapData.js +535 -535
  56. package/dist/solana/swaps/SolanaSwapModule.d.ts +11 -11
  57. package/dist/solana/swaps/SolanaSwapModule.js +12 -12
  58. package/dist/solana/swaps/SolanaSwapProgram.d.ts +376 -376
  59. package/dist/solana/swaps/SolanaSwapProgram.js +769 -769
  60. package/dist/solana/swaps/SwapTypeEnum.d.ts +11 -11
  61. package/dist/solana/swaps/SwapTypeEnum.js +43 -43
  62. package/dist/solana/swaps/modules/SolanaDataAccount.d.ts +95 -95
  63. package/dist/solana/swaps/modules/SolanaDataAccount.js +232 -232
  64. package/dist/solana/swaps/modules/SolanaLpVault.d.ts +69 -69
  65. package/dist/solana/swaps/modules/SolanaLpVault.js +171 -171
  66. package/dist/solana/swaps/modules/SwapClaim.d.ts +126 -126
  67. package/dist/solana/swaps/modules/SwapClaim.js +294 -294
  68. package/dist/solana/swaps/modules/SwapInit.d.ts +213 -213
  69. package/dist/solana/swaps/modules/SwapInit.js +658 -658
  70. package/dist/solana/swaps/modules/SwapRefund.d.ts +87 -87
  71. package/dist/solana/swaps/modules/SwapRefund.js +293 -293
  72. package/dist/solana/swaps/programIdl.json +945 -945
  73. package/dist/solana/swaps/programTypes.d.ts +943 -943
  74. package/dist/solana/swaps/programTypes.js +945 -945
  75. package/dist/solana/swaps/v1/programIdl.json +945 -945
  76. package/dist/solana/swaps/v1/programTypes.d.ts +943 -943
  77. package/dist/solana/swaps/v1/programTypes.js +945 -945
  78. package/dist/solana/swaps/v2/programIdl.json +952 -952
  79. package/dist/solana/swaps/v2/programTypes.d.ts +950 -950
  80. package/dist/solana/swaps/v2/programTypes.js +952 -952
  81. package/dist/solana/wallet/SolanaKeypairWallet.d.ts +29 -29
  82. package/dist/solana/wallet/SolanaKeypairWallet.js +50 -50
  83. package/dist/solana/wallet/SolanaSigner.d.ts +30 -30
  84. package/dist/solana/wallet/SolanaSigner.js +30 -30
  85. package/dist/utils/Utils.d.ts +58 -58
  86. package/dist/utils/Utils.js +170 -170
  87. package/node/index.d.ts +1 -1
  88. package/node/index.js +3 -3
  89. package/package.json +46 -46
  90. package/src/index.ts +87 -87
  91. package/src/node/index.ts +9 -9
  92. package/src/solana/SolanaChainType.ts +32 -32
  93. package/src/solana/SolanaChains.ts +46 -46
  94. package/src/solana/SolanaInitializer.ts +278 -278
  95. package/src/solana/btcrelay/SolanaBtcRelay.ts +615 -615
  96. package/src/solana/btcrelay/headers/SolanaBtcHeader.ts +116 -116
  97. package/src/solana/btcrelay/headers/SolanaBtcStoredHeader.ts +148 -148
  98. package/src/solana/btcrelay/program/programIdl.json +670 -670
  99. package/src/solana/chain/SolanaAction.ts +109 -109
  100. package/src/solana/chain/SolanaChainInterface.ts +404 -404
  101. package/src/solana/chain/SolanaModule.ts +20 -20
  102. package/src/solana/chain/modules/SolanaAddresses.ts +20 -20
  103. package/src/solana/chain/modules/SolanaBlocks.ts +89 -89
  104. package/src/solana/chain/modules/SolanaEvents.ts +271 -271
  105. package/src/solana/chain/modules/SolanaFees.ts +522 -522
  106. package/src/solana/chain/modules/SolanaSignatures.ts +39 -39
  107. package/src/solana/chain/modules/SolanaSlots.ts +85 -85
  108. package/src/solana/chain/modules/SolanaTokens.ts +300 -300
  109. package/src/solana/chain/modules/SolanaTransactions.ts +503 -503
  110. package/src/solana/connection/ConnectionWithRetries.ts +113 -96
  111. package/src/solana/events/SolanaChainEvents.ts +127 -127
  112. package/src/solana/events/SolanaChainEventsBrowser.ts +495 -495
  113. package/src/solana/program/SolanaProgramBase.ts +119 -119
  114. package/src/solana/program/SolanaProgramModule.ts +15 -15
  115. package/src/solana/program/modules/SolanaProgramEvents.ts +157 -157
  116. package/src/solana/swaps/SolanaSwapData.ts +735 -735
  117. package/src/solana/swaps/SolanaSwapModule.ts +19 -19
  118. package/src/solana/swaps/SolanaSwapProgram.ts +1074 -1074
  119. package/src/solana/swaps/SwapTypeEnum.ts +30 -30
  120. package/src/solana/swaps/modules/SolanaDataAccount.ts +302 -302
  121. package/src/solana/swaps/modules/SolanaLpVault.ts +208 -208
  122. package/src/solana/swaps/modules/SwapClaim.ts +387 -387
  123. package/src/solana/swaps/modules/SwapInit.ts +785 -785
  124. package/src/solana/swaps/modules/SwapRefund.ts +353 -353
  125. package/src/solana/swaps/v1/programIdl.json +944 -944
  126. package/src/solana/swaps/v1/programTypes.ts +1885 -1885
  127. package/src/solana/swaps/v2/programIdl.json +951 -951
  128. package/src/solana/swaps/v2/programTypes.ts +1899 -1899
  129. package/src/solana/wallet/SolanaKeypairWallet.ts +56 -56
  130. package/src/solana/wallet/SolanaSigner.ts +43 -43
  131. package/src/utils/Utils.ts +194 -194
@@ -1,40 +1,40 @@
1
- import {SolanaModule} from "../SolanaModule";
2
- import {sign} from "tweetnacl";
3
- import {PublicKey} from "@solana/web3.js";
4
- import {Buffer} from "buffer";
5
- import {SolanaSigner} from "../../wallet/SolanaSigner";
6
- import {sha256} from "@noble/hashes/sha2";
7
-
8
- export class SolanaSignatures extends SolanaModule {
9
-
10
- ///////////////////
11
- //// Data signatures
12
- /**
13
- * Produces an ed25519 signature over the sha256 of a specified data Buffer, only works with providers which
14
- * expose their private key (i.e. backend based, not browser wallet based)
15
- *
16
- * @param signer
17
- * @param data data to sign
18
- */
19
- getDataSignature(signer: SolanaSigner, data: Buffer): Promise<string> {
20
- if(signer.keypair==null) throw new Error("Unsupported");
21
- const buff = sha256(data);
22
- const signature = sign.detached(buff, signer.keypair.secretKey);
23
-
24
- return Promise.resolve(Buffer.from(signature).toString("hex"));
25
- }
26
-
27
- /**
28
- * Checks whether a signature is a valid Ed25519 signature produced by publicKey over a data message (computes
29
- * sha256 hash of the message)
30
- *
31
- * @param data signed data
32
- * @param signature data signature
33
- * @param publicKey public key of the signer
34
- */
35
- isValidDataSignature(data: Buffer, signature: string, publicKey: string): Promise<boolean> {
36
- const hash = sha256(data);
37
- return Promise.resolve(sign.detached.verify(hash, Buffer.from(signature, "hex"), new PublicKey(publicKey).toBuffer()));
38
- }
39
-
1
+ import {SolanaModule} from "../SolanaModule";
2
+ import {sign} from "tweetnacl";
3
+ import {PublicKey} from "@solana/web3.js";
4
+ import {Buffer} from "buffer";
5
+ import {SolanaSigner} from "../../wallet/SolanaSigner";
6
+ import {sha256} from "@noble/hashes/sha2";
7
+
8
+ export class SolanaSignatures extends SolanaModule {
9
+
10
+ ///////////////////
11
+ //// Data signatures
12
+ /**
13
+ * Produces an ed25519 signature over the sha256 of a specified data Buffer, only works with providers which
14
+ * expose their private key (i.e. backend based, not browser wallet based)
15
+ *
16
+ * @param signer
17
+ * @param data data to sign
18
+ */
19
+ getDataSignature(signer: SolanaSigner, data: Buffer): Promise<string> {
20
+ if(signer.keypair==null) throw new Error("Unsupported");
21
+ const buff = sha256(data);
22
+ const signature = sign.detached(buff, signer.keypair.secretKey);
23
+
24
+ return Promise.resolve(Buffer.from(signature).toString("hex"));
25
+ }
26
+
27
+ /**
28
+ * Checks whether a signature is a valid Ed25519 signature produced by publicKey over a data message (computes
29
+ * sha256 hash of the message)
30
+ *
31
+ * @param data signed data
32
+ * @param signature data signature
33
+ * @param publicKey public key of the signer
34
+ */
35
+ isValidDataSignature(data: Buffer, signature: string, publicKey: string): Promise<boolean> {
36
+ const hash = sha256(data);
37
+ return Promise.resolve(sign.detached.verify(hash, Buffer.from(signature, "hex"), new PublicKey(publicKey).toBuffer()));
38
+ }
39
+
40
40
  }
@@ -1,86 +1,86 @@
1
- import {SolanaModule} from "../SolanaModule";
2
- import {Commitment} from "@solana/web3.js";
3
-
4
-
5
- export class SolanaSlots extends SolanaModule {
6
-
7
- public readonly SLOT_CACHE_SLOTS = 12;
8
- public readonly SLOT_CACHE_TIME = this.SLOT_CACHE_SLOTS*this.root._SLOT_TIME;
9
-
10
- private slotCache: {
11
- [key in Commitment]?: {
12
- slot: Promise<number>,
13
- timestamp: number
14
- }
15
- } = {};
16
-
17
- /**
18
- * Initiates fetch of a given slot & saves it to cache
19
- *
20
- * @param commitment
21
- * @private
22
- */
23
- private fetchAndSaveSlot(commitment: Commitment): {slot: Promise<number>, timestamp: number} {
24
- const slotPromise = this.connection.getSlot(commitment);
25
- const timestamp = Date.now();
26
- this.slotCache[commitment] = {
27
- slot: slotPromise,
28
- timestamp
29
- }
30
- slotPromise.catch(() => {
31
- const slotCache = this.slotCache[commitment];
32
- if(slotCache!=null && slotCache.slot===slotPromise) delete this.slotCache[commitment];
33
- })
34
- return {
35
- slot: slotPromise,
36
- timestamp
37
- }
38
- }
39
-
40
- ///////////////////
41
- //// Slots
42
- /**
43
- * Gets the latest slot for a given commitment, with the timestamp of when that slot was actually retrieved from
44
- * the RPC (useful for when slots are cached), does no estimation on the current slot number based on cached value
45
- *
46
- * @param commitment
47
- */
48
- public async getSlotAndTimestamp(commitment: Commitment): Promise<{
49
- slot: number,
50
- timestamp: number
51
- }> {
52
- let cachedSlotData = this.slotCache[commitment];
53
-
54
- if(cachedSlotData==null || Date.now()-cachedSlotData.timestamp>this.SLOT_CACHE_TIME) {
55
- cachedSlotData = this.fetchAndSaveSlot(commitment);
56
- }
57
-
58
- return {
59
- slot: await cachedSlotData.slot,
60
- timestamp: cachedSlotData.timestamp
61
- };
62
- }
63
-
64
- /**
65
- * Gets the slot for a given commitment, uses slot cache & tries to estimate current slot based on the cached
66
- * value, cache has relatively short expiry of just 12 slots (4.8 seconds)
67
- *
68
- * @remarks Doesn't try to extrapolate the slot number for `finalized` commitment level
69
- *
70
- * @param commitment
71
- */
72
- public async getSlot(commitment: Commitment): Promise<number> {
73
- let cachedSlotData = this.slotCache[commitment];
74
-
75
- if(cachedSlotData!=null && Date.now()-cachedSlotData.timestamp<this.SLOT_CACHE_TIME) {
76
- if(commitment==="finalized") return await cachedSlotData.slot;
77
- return (await cachedSlotData.slot) + Math.floor((Date.now()-cachedSlotData.timestamp)/this.root._SLOT_TIME);
78
- }
79
-
80
- cachedSlotData = this.fetchAndSaveSlot(commitment);
81
-
82
- return await cachedSlotData.slot;
83
- }
84
-
85
-
1
+ import {SolanaModule} from "../SolanaModule";
2
+ import {Commitment} from "@solana/web3.js";
3
+
4
+
5
+ export class SolanaSlots extends SolanaModule {
6
+
7
+ public readonly SLOT_CACHE_SLOTS = 12;
8
+ public readonly SLOT_CACHE_TIME = this.SLOT_CACHE_SLOTS*this.root._SLOT_TIME;
9
+
10
+ private slotCache: {
11
+ [key in Commitment]?: {
12
+ slot: Promise<number>,
13
+ timestamp: number
14
+ }
15
+ } = {};
16
+
17
+ /**
18
+ * Initiates fetch of a given slot & saves it to cache
19
+ *
20
+ * @param commitment
21
+ * @private
22
+ */
23
+ private fetchAndSaveSlot(commitment: Commitment): {slot: Promise<number>, timestamp: number} {
24
+ const slotPromise = this.connection.getSlot(commitment);
25
+ const timestamp = Date.now();
26
+ this.slotCache[commitment] = {
27
+ slot: slotPromise,
28
+ timestamp
29
+ }
30
+ slotPromise.catch(() => {
31
+ const slotCache = this.slotCache[commitment];
32
+ if(slotCache!=null && slotCache.slot===slotPromise) delete this.slotCache[commitment];
33
+ })
34
+ return {
35
+ slot: slotPromise,
36
+ timestamp
37
+ }
38
+ }
39
+
40
+ ///////////////////
41
+ //// Slots
42
+ /**
43
+ * Gets the latest slot for a given commitment, with the timestamp of when that slot was actually retrieved from
44
+ * the RPC (useful for when slots are cached), does no estimation on the current slot number based on cached value
45
+ *
46
+ * @param commitment
47
+ */
48
+ public async getSlotAndTimestamp(commitment: Commitment): Promise<{
49
+ slot: number,
50
+ timestamp: number
51
+ }> {
52
+ let cachedSlotData = this.slotCache[commitment];
53
+
54
+ if(cachedSlotData==null || Date.now()-cachedSlotData.timestamp>this.SLOT_CACHE_TIME) {
55
+ cachedSlotData = this.fetchAndSaveSlot(commitment);
56
+ }
57
+
58
+ return {
59
+ slot: await cachedSlotData.slot,
60
+ timestamp: cachedSlotData.timestamp
61
+ };
62
+ }
63
+
64
+ /**
65
+ * Gets the slot for a given commitment, uses slot cache & tries to estimate current slot based on the cached
66
+ * value, cache has relatively short expiry of just 12 slots (4.8 seconds)
67
+ *
68
+ * @remarks Doesn't try to extrapolate the slot number for `finalized` commitment level
69
+ *
70
+ * @param commitment
71
+ */
72
+ public async getSlot(commitment: Commitment): Promise<number> {
73
+ let cachedSlotData = this.slotCache[commitment];
74
+
75
+ if(cachedSlotData!=null && Date.now()-cachedSlotData.timestamp<this.SLOT_CACHE_TIME) {
76
+ if(commitment==="finalized") return await cachedSlotData.slot;
77
+ return (await cachedSlotData.slot) + Math.floor((Date.now()-cachedSlotData.timestamp)/this.root._SLOT_TIME);
78
+ }
79
+
80
+ cachedSlotData = this.fetchAndSaveSlot(commitment);
81
+
82
+ return await cachedSlotData.slot;
83
+ }
84
+
85
+
86
86
  }