@atomiqlabs/chain-solana 12.0.13 → 12.0.15

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 (114) hide show
  1. package/LICENSE +201 -201
  2. package/dist/index.d.ts +29 -29
  3. package/dist/index.js +45 -45
  4. package/dist/solana/SolanaChainType.d.ts +11 -11
  5. package/dist/solana/SolanaChainType.js +2 -2
  6. package/dist/solana/SolanaChains.d.ts +20 -20
  7. package/dist/solana/SolanaChains.js +25 -25
  8. package/dist/solana/SolanaInitializer.d.ts +18 -18
  9. package/dist/solana/SolanaInitializer.js +63 -63
  10. package/dist/solana/btcrelay/SolanaBtcRelay.d.ts +228 -228
  11. package/dist/solana/btcrelay/SolanaBtcRelay.js +441 -441
  12. package/dist/solana/btcrelay/headers/SolanaBtcHeader.d.ts +29 -29
  13. package/dist/solana/btcrelay/headers/SolanaBtcHeader.js +34 -34
  14. package/dist/solana/btcrelay/headers/SolanaBtcStoredHeader.d.ts +46 -46
  15. package/dist/solana/btcrelay/headers/SolanaBtcStoredHeader.js +78 -78
  16. package/dist/solana/btcrelay/program/programIdl.json +671 -671
  17. package/dist/solana/chain/SolanaAction.d.ts +26 -26
  18. package/dist/solana/chain/SolanaAction.js +86 -86
  19. package/dist/solana/chain/SolanaChainInterface.d.ts +65 -65
  20. package/dist/solana/chain/SolanaChainInterface.js +125 -125
  21. package/dist/solana/chain/SolanaModule.d.ts +14 -14
  22. package/dist/solana/chain/SolanaModule.js +13 -13
  23. package/dist/solana/chain/modules/SolanaAddresses.d.ts +8 -8
  24. package/dist/solana/chain/modules/SolanaAddresses.js +22 -22
  25. package/dist/solana/chain/modules/SolanaBlocks.d.ts +28 -28
  26. package/dist/solana/chain/modules/SolanaBlocks.js +72 -72
  27. package/dist/solana/chain/modules/SolanaEvents.d.ts +68 -68
  28. package/dist/solana/chain/modules/SolanaEvents.js +238 -225
  29. package/dist/solana/chain/modules/SolanaFees.d.ts +121 -121
  30. package/dist/solana/chain/modules/SolanaFees.js +379 -379
  31. package/dist/solana/chain/modules/SolanaSignatures.d.ts +23 -23
  32. package/dist/solana/chain/modules/SolanaSignatures.js +39 -39
  33. package/dist/solana/chain/modules/SolanaSlots.d.ts +31 -31
  34. package/dist/solana/chain/modules/SolanaSlots.js +68 -68
  35. package/dist/solana/chain/modules/SolanaTokens.d.ts +136 -136
  36. package/dist/solana/chain/modules/SolanaTokens.js +248 -248
  37. package/dist/solana/chain/modules/SolanaTransactions.d.ts +124 -124
  38. package/dist/solana/chain/modules/SolanaTransactions.js +323 -323
  39. package/dist/solana/events/SolanaChainEvents.d.ts +88 -88
  40. package/dist/solana/events/SolanaChainEvents.js +256 -256
  41. package/dist/solana/events/SolanaChainEventsBrowser.d.ts +75 -75
  42. package/dist/solana/events/SolanaChainEventsBrowser.js +172 -172
  43. package/dist/solana/program/SolanaProgramBase.d.ts +40 -40
  44. package/dist/solana/program/SolanaProgramBase.js +43 -43
  45. package/dist/solana/program/SolanaProgramModule.d.ts +8 -8
  46. package/dist/solana/program/SolanaProgramModule.js +11 -11
  47. package/dist/solana/program/modules/SolanaProgramEvents.d.ts +53 -53
  48. package/dist/solana/program/modules/SolanaProgramEvents.js +114 -114
  49. package/dist/solana/swaps/SolanaSwapData.d.ts +71 -71
  50. package/dist/solana/swaps/SolanaSwapData.js +292 -292
  51. package/dist/solana/swaps/SolanaSwapModule.d.ts +10 -10
  52. package/dist/solana/swaps/SolanaSwapModule.js +11 -11
  53. package/dist/solana/swaps/SolanaSwapProgram.d.ts +224 -224
  54. package/dist/solana/swaps/SolanaSwapProgram.js +570 -570
  55. package/dist/solana/swaps/SwapTypeEnum.d.ts +11 -11
  56. package/dist/solana/swaps/SwapTypeEnum.js +42 -42
  57. package/dist/solana/swaps/modules/SolanaDataAccount.d.ts +94 -94
  58. package/dist/solana/swaps/modules/SolanaDataAccount.js +231 -231
  59. package/dist/solana/swaps/modules/SolanaLpVault.d.ts +71 -71
  60. package/dist/solana/swaps/modules/SolanaLpVault.js +173 -173
  61. package/dist/solana/swaps/modules/SwapClaim.d.ts +129 -129
  62. package/dist/solana/swaps/modules/SwapClaim.js +291 -291
  63. package/dist/solana/swaps/modules/SwapInit.d.ts +217 -217
  64. package/dist/solana/swaps/modules/SwapInit.js +519 -519
  65. package/dist/solana/swaps/modules/SwapRefund.d.ts +82 -82
  66. package/dist/solana/swaps/modules/SwapRefund.js +262 -262
  67. package/dist/solana/swaps/programIdl.json +945 -945
  68. package/dist/solana/swaps/programTypes.d.ts +943 -943
  69. package/dist/solana/swaps/programTypes.js +945 -945
  70. package/dist/solana/wallet/SolanaKeypairWallet.d.ts +9 -9
  71. package/dist/solana/wallet/SolanaKeypairWallet.js +33 -33
  72. package/dist/solana/wallet/SolanaSigner.d.ts +11 -11
  73. package/dist/solana/wallet/SolanaSigner.js +17 -17
  74. package/dist/utils/Utils.d.ts +53 -53
  75. package/dist/utils/Utils.js +170 -170
  76. package/package.json +41 -41
  77. package/src/index.ts +36 -36
  78. package/src/solana/SolanaChainType.ts +27 -27
  79. package/src/solana/SolanaChains.ts +23 -23
  80. package/src/solana/SolanaInitializer.ts +102 -102
  81. package/src/solana/btcrelay/SolanaBtcRelay.ts +589 -589
  82. package/src/solana/btcrelay/headers/SolanaBtcHeader.ts +57 -57
  83. package/src/solana/btcrelay/headers/SolanaBtcStoredHeader.ts +102 -102
  84. package/src/solana/btcrelay/program/programIdl.json +670 -670
  85. package/src/solana/chain/SolanaAction.ts +108 -108
  86. package/src/solana/chain/SolanaChainInterface.ts +192 -192
  87. package/src/solana/chain/SolanaModule.ts +20 -20
  88. package/src/solana/chain/modules/SolanaAddresses.ts +20 -20
  89. package/src/solana/chain/modules/SolanaBlocks.ts +78 -78
  90. package/src/solana/chain/modules/SolanaEvents.ts +270 -256
  91. package/src/solana/chain/modules/SolanaFees.ts +450 -450
  92. package/src/solana/chain/modules/SolanaSignatures.ts +39 -39
  93. package/src/solana/chain/modules/SolanaSlots.ts +82 -82
  94. package/src/solana/chain/modules/SolanaTokens.ts +307 -307
  95. package/src/solana/chain/modules/SolanaTransactions.ts +365 -365
  96. package/src/solana/events/SolanaChainEvents.ts +299 -299
  97. package/src/solana/events/SolanaChainEventsBrowser.ts +209 -209
  98. package/src/solana/program/SolanaProgramBase.ts +79 -79
  99. package/src/solana/program/SolanaProgramModule.ts +15 -15
  100. package/src/solana/program/modules/SolanaProgramEvents.ts +155 -155
  101. package/src/solana/swaps/SolanaSwapData.ts +430 -430
  102. package/src/solana/swaps/SolanaSwapModule.ts +16 -16
  103. package/src/solana/swaps/SolanaSwapProgram.ts +854 -854
  104. package/src/solana/swaps/SwapTypeEnum.ts +29 -29
  105. package/src/solana/swaps/modules/SolanaDataAccount.ts +307 -307
  106. package/src/solana/swaps/modules/SolanaLpVault.ts +215 -215
  107. package/src/solana/swaps/modules/SwapClaim.ts +389 -389
  108. package/src/solana/swaps/modules/SwapInit.ts +663 -663
  109. package/src/solana/swaps/modules/SwapRefund.ts +323 -323
  110. package/src/solana/swaps/programIdl.json +944 -944
  111. package/src/solana/swaps/programTypes.ts +1885 -1885
  112. package/src/solana/wallet/SolanaKeypairWallet.ts +36 -36
  113. package/src/solana/wallet/SolanaSigner.ts +24 -24
  114. package/src/utils/Utils.ts +180 -180
package/package.json CHANGED
@@ -1,41 +1,41 @@
1
- {
2
- "name": "@atomiqlabs/chain-solana",
3
- "version": "12.0.13",
4
- "description": "Solana specific base implementation",
5
- "main": "./dist/index.js",
6
- "types:": "./dist/index.d.ts",
7
- "scripts": {
8
- "test": "echo \"Error: no test specified\" && exit 1"
9
- },
10
- "files": [
11
- "/dist",
12
- "/src"
13
- ],
14
- "keywords": [
15
- "Solana",
16
- "Bitcoin",
17
- "Cross-chain",
18
- "Cryptocurrency",
19
- "Bridge",
20
- "Trustless"
21
- ],
22
- "author": "adambor",
23
- "license": "ISC",
24
- "dependencies": {
25
- "@atomiqlabs/base": "^12.0.3",
26
- "@noble/hashes": "^1.7.1",
27
- "bn.js": "5.2.1",
28
- "bs58": "4.0.1",
29
- "buffer": "6.0.3",
30
- "tweetnacl": "1.0.3"
31
- },
32
- "peerDependencies": {
33
- "@coral-xyz/anchor": "^0.29.0",
34
- "@solana/spl-token": "^0.3.9",
35
- "@solana/web3.js": "^1.95.2"
36
- },
37
- "devDependencies": {
38
- "@types/bn.js": "5.1.6",
39
- "typescript": "4.9.5"
40
- }
41
- }
1
+ {
2
+ "name": "@atomiqlabs/chain-solana",
3
+ "version": "12.0.15",
4
+ "description": "Solana specific base implementation",
5
+ "main": "./dist/index.js",
6
+ "types:": "./dist/index.d.ts",
7
+ "scripts": {
8
+ "test": "echo \"Error: no test specified\" && exit 1"
9
+ },
10
+ "files": [
11
+ "/dist",
12
+ "/src"
13
+ ],
14
+ "keywords": [
15
+ "Solana",
16
+ "Bitcoin",
17
+ "Cross-chain",
18
+ "Cryptocurrency",
19
+ "Bridge",
20
+ "Trustless"
21
+ ],
22
+ "author": "adambor",
23
+ "license": "ISC",
24
+ "dependencies": {
25
+ "@atomiqlabs/base": "^12.0.3",
26
+ "@noble/hashes": "^1.7.1",
27
+ "bn.js": "5.2.1",
28
+ "bs58": "4.0.1",
29
+ "buffer": "6.0.3",
30
+ "tweetnacl": "1.0.3"
31
+ },
32
+ "peerDependencies": {
33
+ "@coral-xyz/anchor": "^0.29.0",
34
+ "@solana/spl-token": "^0.3.9",
35
+ "@solana/web3.js": "^1.95.2"
36
+ },
37
+ "devDependencies": {
38
+ "@types/bn.js": "5.1.6",
39
+ "typescript": "4.9.5"
40
+ }
41
+ }
package/src/index.ts CHANGED
@@ -1,36 +1,36 @@
1
- export * from "./solana/btcrelay/headers/SolanaBtcHeader";
2
- export * from "./solana/btcrelay/headers/SolanaBtcStoredHeader";
3
- export * from "./solana/btcrelay/SolanaBtcRelay";
4
-
5
- export * from "./solana/chain/modules/SolanaAddresses";
6
- export * from "./solana/chain/modules/SolanaBlocks";
7
- export * from "./solana/chain/modules/SolanaEvents";
8
- export * from "./solana/chain/modules/SolanaFees";
9
- export * from "./solana/chain/modules/SolanaSignatures";
10
- export * from "./solana/chain/modules/SolanaSlots";
11
- export * from "./solana/chain/modules/SolanaTokens";
12
- export * from "./solana/chain/modules/SolanaTransactions";
13
-
14
- export * from "./solana/chain/SolanaAction";
15
- export * from "./solana/chain/SolanaChainInterface";
16
- export * from "./solana/chain/SolanaModule";
17
-
18
- export * from "./solana/program/modules/SolanaProgramEvents";
19
- export * from "./solana/program/SolanaProgramBase";
20
-
21
- export * from "./solana/swaps/SolanaSwapProgram";
22
- export * from "./solana/swaps/SolanaSwapData";
23
- export * from "./solana/swaps/SolanaSwapModule";
24
- export * from "./solana/swaps/modules/SolanaDataAccount";
25
- export * from "./solana/swaps/modules/SolanaLpVault";
26
- export * from "./solana/swaps/modules/SwapClaim";
27
- export * from "./solana/swaps/modules/SwapInit";
28
- export * from "./solana/swaps/modules/SwapRefund";
29
-
30
- export * from "./solana/wallet/SolanaKeypairWallet";
31
- export * from "./solana/wallet/SolanaSigner";
32
-
33
- export * from "./solana/SolanaChainType";
34
- export * from "./solana/SolanaInitializer";
35
-
36
- export * from "./utils/Utils";
1
+ export * from "./solana/btcrelay/headers/SolanaBtcHeader";
2
+ export * from "./solana/btcrelay/headers/SolanaBtcStoredHeader";
3
+ export * from "./solana/btcrelay/SolanaBtcRelay";
4
+
5
+ export * from "./solana/chain/modules/SolanaAddresses";
6
+ export * from "./solana/chain/modules/SolanaBlocks";
7
+ export * from "./solana/chain/modules/SolanaEvents";
8
+ export * from "./solana/chain/modules/SolanaFees";
9
+ export * from "./solana/chain/modules/SolanaSignatures";
10
+ export * from "./solana/chain/modules/SolanaSlots";
11
+ export * from "./solana/chain/modules/SolanaTokens";
12
+ export * from "./solana/chain/modules/SolanaTransactions";
13
+
14
+ export * from "./solana/chain/SolanaAction";
15
+ export * from "./solana/chain/SolanaChainInterface";
16
+ export * from "./solana/chain/SolanaModule";
17
+
18
+ export * from "./solana/program/modules/SolanaProgramEvents";
19
+ export * from "./solana/program/SolanaProgramBase";
20
+
21
+ export * from "./solana/swaps/SolanaSwapProgram";
22
+ export * from "./solana/swaps/SolanaSwapData";
23
+ export * from "./solana/swaps/SolanaSwapModule";
24
+ export * from "./solana/swaps/modules/SolanaDataAccount";
25
+ export * from "./solana/swaps/modules/SolanaLpVault";
26
+ export * from "./solana/swaps/modules/SwapClaim";
27
+ export * from "./solana/swaps/modules/SwapInit";
28
+ export * from "./solana/swaps/modules/SwapRefund";
29
+
30
+ export * from "./solana/wallet/SolanaKeypairWallet";
31
+ export * from "./solana/wallet/SolanaSigner";
32
+
33
+ export * from "./solana/SolanaChainType";
34
+ export * from "./solana/SolanaInitializer";
35
+
36
+ export * from "./utils/Utils";
@@ -1,27 +1,27 @@
1
- import {ChainType} from "@atomiqlabs/base";
2
- import {SolanaTx} from "./chain/modules/SolanaTransactions";
3
- import {SolanaPreFetchData, SolanaPreFetchVerification} from "./swaps/modules/SwapInit";
4
- import {SolanaSigner} from "./wallet/SolanaSigner";
5
- import {SolanaSwapProgram} from "./swaps/SolanaSwapProgram";
6
- import {SolanaSwapData} from "./swaps/SolanaSwapData";
7
- import {SolanaChainEventsBrowser} from "./events/SolanaChainEventsBrowser";
8
- import {SolanaBtcRelay} from "./btcrelay/SolanaBtcRelay";
9
- import {SolanaChainInterface} from "./chain/SolanaChainInterface";
10
- import {Wallet} from "@coral-xyz/anchor/dist/cjs/provider";
11
-
12
- export type SolanaChainType = ChainType<
13
- "SOLANA",
14
- SolanaPreFetchData,
15
- SolanaPreFetchVerification,
16
- SolanaTx,
17
- SolanaSigner,
18
- Wallet,
19
- SolanaSwapData,
20
- SolanaSwapProgram,
21
- SolanaChainInterface,
22
- SolanaChainEventsBrowser,
23
- SolanaBtcRelay<any>,
24
- never,
25
- never,
26
- never
27
- >;
1
+ import {ChainType} from "@atomiqlabs/base";
2
+ import {SolanaTx} from "./chain/modules/SolanaTransactions";
3
+ import {SolanaPreFetchData, SolanaPreFetchVerification} from "./swaps/modules/SwapInit";
4
+ import {SolanaSigner} from "./wallet/SolanaSigner";
5
+ import {SolanaSwapProgram} from "./swaps/SolanaSwapProgram";
6
+ import {SolanaSwapData} from "./swaps/SolanaSwapData";
7
+ import {SolanaChainEventsBrowser} from "./events/SolanaChainEventsBrowser";
8
+ import {SolanaBtcRelay} from "./btcrelay/SolanaBtcRelay";
9
+ import {SolanaChainInterface} from "./chain/SolanaChainInterface";
10
+ import {Wallet} from "@coral-xyz/anchor/dist/cjs/provider";
11
+
12
+ export type SolanaChainType = ChainType<
13
+ "SOLANA",
14
+ SolanaPreFetchData,
15
+ SolanaPreFetchVerification,
16
+ SolanaTx,
17
+ SolanaSigner,
18
+ Wallet,
19
+ SolanaSwapData,
20
+ SolanaSwapProgram,
21
+ SolanaChainInterface,
22
+ SolanaChainEventsBrowser,
23
+ SolanaBtcRelay<any>,
24
+ never,
25
+ never,
26
+ never
27
+ >;
@@ -1,23 +1,23 @@
1
- import {BitcoinNetwork} from "@atomiqlabs/base";
2
-
3
- export const SolanaChains = {
4
- //TODO: Not deployed yet
5
- [BitcoinNetwork.TESTNET4]: {
6
- addresses: {
7
- swapContract: "11111111111111111111111111111111",
8
- btcRelayContract: "11111111111111111111111111111111"
9
- }
10
- },
11
- [BitcoinNetwork.TESTNET]: {
12
- addresses: {
13
- swapContract: "4hfUykhqmD7ZRvNh1HuzVKEY7ToENixtdUKZspNDCrEM",
14
- btcRelayContract: "3KHSHFpEK6bsjg3bqcxQ9qssJYtRCMi2S9TYVe4q6CQc"
15
- }
16
- },
17
- [BitcoinNetwork.MAINNET]: {
18
- addresses: {
19
- swapContract: "4hfUykhqmD7ZRvNh1HuzVKEY7ToENixtdUKZspNDCrEM",
20
- btcRelayContract: "3KHSHFpEK6bsjg3bqcxQ9qssJYtRCMi2S9TYVe4q6CQc"
21
- }
22
- }
23
- } as const;
1
+ import {BitcoinNetwork} from "@atomiqlabs/base";
2
+
3
+ export const SolanaChains = {
4
+ //TODO: Not deployed yet
5
+ [BitcoinNetwork.TESTNET4]: {
6
+ addresses: {
7
+ swapContract: "11111111111111111111111111111111",
8
+ btcRelayContract: "11111111111111111111111111111111"
9
+ }
10
+ },
11
+ [BitcoinNetwork.TESTNET]: {
12
+ addresses: {
13
+ swapContract: "4hfUykhqmD7ZRvNh1HuzVKEY7ToENixtdUKZspNDCrEM",
14
+ btcRelayContract: "3KHSHFpEK6bsjg3bqcxQ9qssJYtRCMi2S9TYVe4q6CQc"
15
+ }
16
+ },
17
+ [BitcoinNetwork.MAINNET]: {
18
+ addresses: {
19
+ swapContract: "4hfUykhqmD7ZRvNh1HuzVKEY7ToENixtdUKZspNDCrEM",
20
+ btcRelayContract: "3KHSHFpEK6bsjg3bqcxQ9qssJYtRCMi2S9TYVe4q6CQc"
21
+ }
22
+ }
23
+ } as const;
@@ -1,102 +1,102 @@
1
- import {
2
- BaseTokenType,
3
- BitcoinNetwork,
4
- BitcoinRpc,
5
- ChainData,
6
- ChainInitializer,
7
- IStorageManager,
8
- StorageObject
9
- } from "@atomiqlabs/base";
10
- import {Connection} from "@solana/web3.js";
11
- import {StoredDataAccount} from "./swaps/modules/SolanaDataAccount";
12
- import {SolanaChainInterface, SolanaRetryPolicy} from "./chain/SolanaChainInterface";
13
- import {SolanaFees} from "./chain/modules/SolanaFees";
14
- import {SolanaChainType} from "./SolanaChainType";
15
- import {SolanaBtcRelay} from "./btcrelay/SolanaBtcRelay";
16
- import {SolanaChains} from "./SolanaChains";
17
- import {SolanaSwapProgram} from "./swaps/SolanaSwapProgram";
18
- import {SolanaChainEventsBrowser} from "./events/SolanaChainEventsBrowser";
19
- import {SolanaSwapData} from "./swaps/SolanaSwapData";
20
-
21
- const chainId = "SOLANA" as const;
22
-
23
- export type SolanaAssetsType = BaseTokenType<"WBTC" | "USDC" | "USDT" | "SOL" | "BONK">;
24
- const SolanaAssets: SolanaAssetsType = {
25
- WBTC: {
26
- address: "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh",
27
- decimals: 8
28
- },
29
- USDC: {
30
- address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
31
- decimals: 6
32
- },
33
- USDT: {
34
- address: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
35
- decimals: 6
36
- },
37
- SOL: {
38
- address: "So11111111111111111111111111111111111111112",
39
- decimals: 9
40
- },
41
- BONK: {
42
- address: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
43
- decimals: 5
44
- }
45
- } as const;
46
-
47
- export type SolanaSwapperOptions = {
48
- rpcUrl: string | Connection,
49
- dataAccountStorage?: IStorageManager<StoredDataAccount>,
50
- retryPolicy?: SolanaRetryPolicy,
51
-
52
- btcRelayContract?: string,
53
- swapContract?: string,
54
-
55
- fees?: SolanaFees
56
- };
57
-
58
- export function initializeSolana(
59
- options: SolanaSwapperOptions,
60
- bitcoinRpc: BitcoinRpc<any>,
61
- network: BitcoinNetwork,
62
- storageCtor: <T extends StorageObject>(name: string) => IStorageManager<T>
63
- ): ChainData<SolanaChainType> {
64
- const connection = typeof(options.rpcUrl)==="string" ?
65
- new Connection(options.rpcUrl) :
66
- options.rpcUrl;
67
-
68
- const Fees = options.fees ?? new SolanaFees(connection, 200000, 4, 100);
69
-
70
- const chainInterface = new SolanaChainInterface(connection, options.retryPolicy ?? {transactionResendInterval: 1000}, Fees);
71
-
72
- const btcRelay = new SolanaBtcRelay(chainInterface, bitcoinRpc, options.btcRelayContract ?? SolanaChains[network].addresses.btcRelayContract);
73
-
74
- const swapContract = new SolanaSwapProgram(
75
- chainInterface,
76
- btcRelay,
77
- options.dataAccountStorage || storageCtor("solAccounts"),
78
- options.swapContract ?? SolanaChains[network].addresses.swapContract
79
- );
80
- const chainEvents = new SolanaChainEventsBrowser(connection, swapContract);
81
-
82
- return {
83
- chainId,
84
- btcRelay,
85
- swapContract,
86
- chainEvents,
87
- swapDataConstructor: SolanaSwapData,
88
- chainInterface,
89
- spvVaultContract: null as never,
90
- spvVaultDataConstructor: null,
91
- spvVaultWithdrawalDataConstructor: null
92
- };
93
- }
94
-
95
- export type SolanaInitializerType = ChainInitializer<SolanaSwapperOptions, SolanaChainType, SolanaAssetsType>;
96
- export const SolanaInitializer: SolanaInitializerType = {
97
- chainId,
98
- chainType: null as SolanaChainType,
99
- initializer: initializeSolana,
100
- tokens: SolanaAssets,
101
- options: null as SolanaSwapperOptions
102
- } as const;
1
+ import {
2
+ BaseTokenType,
3
+ BitcoinNetwork,
4
+ BitcoinRpc,
5
+ ChainData,
6
+ ChainInitializer,
7
+ IStorageManager,
8
+ StorageObject
9
+ } from "@atomiqlabs/base";
10
+ import {Connection} from "@solana/web3.js";
11
+ import {StoredDataAccount} from "./swaps/modules/SolanaDataAccount";
12
+ import {SolanaChainInterface, SolanaRetryPolicy} from "./chain/SolanaChainInterface";
13
+ import {SolanaFees} from "./chain/modules/SolanaFees";
14
+ import {SolanaChainType} from "./SolanaChainType";
15
+ import {SolanaBtcRelay} from "./btcrelay/SolanaBtcRelay";
16
+ import {SolanaChains} from "./SolanaChains";
17
+ import {SolanaSwapProgram} from "./swaps/SolanaSwapProgram";
18
+ import {SolanaChainEventsBrowser} from "./events/SolanaChainEventsBrowser";
19
+ import {SolanaSwapData} from "./swaps/SolanaSwapData";
20
+
21
+ const chainId = "SOLANA" as const;
22
+
23
+ export type SolanaAssetsType = BaseTokenType<"WBTC" | "USDC" | "USDT" | "SOL" | "BONK">;
24
+ const SolanaAssets: SolanaAssetsType = {
25
+ WBTC: {
26
+ address: "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh",
27
+ decimals: 8
28
+ },
29
+ USDC: {
30
+ address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
31
+ decimals: 6
32
+ },
33
+ USDT: {
34
+ address: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
35
+ decimals: 6
36
+ },
37
+ SOL: {
38
+ address: "So11111111111111111111111111111111111111112",
39
+ decimals: 9
40
+ },
41
+ BONK: {
42
+ address: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
43
+ decimals: 5
44
+ }
45
+ } as const;
46
+
47
+ export type SolanaSwapperOptions = {
48
+ rpcUrl: string | Connection,
49
+ dataAccountStorage?: IStorageManager<StoredDataAccount>,
50
+ retryPolicy?: SolanaRetryPolicy,
51
+
52
+ btcRelayContract?: string,
53
+ swapContract?: string,
54
+
55
+ fees?: SolanaFees
56
+ };
57
+
58
+ export function initializeSolana(
59
+ options: SolanaSwapperOptions,
60
+ bitcoinRpc: BitcoinRpc<any>,
61
+ network: BitcoinNetwork,
62
+ storageCtor: <T extends StorageObject>(name: string) => IStorageManager<T>
63
+ ): ChainData<SolanaChainType> {
64
+ const connection = typeof(options.rpcUrl)==="string" ?
65
+ new Connection(options.rpcUrl) :
66
+ options.rpcUrl;
67
+
68
+ const Fees = options.fees ?? new SolanaFees(connection, 200000, 4, 100);
69
+
70
+ const chainInterface = new SolanaChainInterface(connection, options.retryPolicy ?? {transactionResendInterval: 1000}, Fees);
71
+
72
+ const btcRelay = new SolanaBtcRelay(chainInterface, bitcoinRpc, options.btcRelayContract ?? SolanaChains[network].addresses.btcRelayContract);
73
+
74
+ const swapContract = new SolanaSwapProgram(
75
+ chainInterface,
76
+ btcRelay,
77
+ options.dataAccountStorage || storageCtor("solAccounts"),
78
+ options.swapContract ?? SolanaChains[network].addresses.swapContract
79
+ );
80
+ const chainEvents = new SolanaChainEventsBrowser(connection, swapContract);
81
+
82
+ return {
83
+ chainId,
84
+ btcRelay,
85
+ swapContract,
86
+ chainEvents,
87
+ swapDataConstructor: SolanaSwapData,
88
+ chainInterface,
89
+ spvVaultContract: null as never,
90
+ spvVaultDataConstructor: null,
91
+ spvVaultWithdrawalDataConstructor: null
92
+ };
93
+ }
94
+
95
+ export type SolanaInitializerType = ChainInitializer<SolanaSwapperOptions, SolanaChainType, SolanaAssetsType>;
96
+ export const SolanaInitializer: SolanaInitializerType = {
97
+ chainId,
98
+ chainType: null as SolanaChainType,
99
+ initializer: initializeSolana,
100
+ tokens: SolanaAssets,
101
+ options: null as SolanaSwapperOptions
102
+ } as const;