@atomiqlabs/chain-solana 12.0.11 → 12.0.13
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.
- package/LICENSE +201 -201
- package/dist/index.d.ts +29 -29
- package/dist/index.js +45 -45
- package/dist/solana/SolanaChainType.d.ts +11 -11
- package/dist/solana/SolanaChainType.js +2 -2
- package/dist/solana/SolanaChains.d.ts +20 -20
- package/dist/solana/SolanaChains.js +25 -25
- package/dist/solana/SolanaInitializer.d.ts +18 -18
- package/dist/solana/SolanaInitializer.js +63 -63
- package/dist/solana/btcrelay/SolanaBtcRelay.d.ts +228 -228
- package/dist/solana/btcrelay/SolanaBtcRelay.js +441 -441
- package/dist/solana/btcrelay/headers/SolanaBtcHeader.d.ts +29 -29
- package/dist/solana/btcrelay/headers/SolanaBtcHeader.js +34 -34
- package/dist/solana/btcrelay/headers/SolanaBtcStoredHeader.d.ts +46 -46
- package/dist/solana/btcrelay/headers/SolanaBtcStoredHeader.js +78 -78
- package/dist/solana/btcrelay/program/programIdl.json +671 -671
- package/dist/solana/chain/SolanaAction.d.ts +26 -26
- package/dist/solana/chain/SolanaAction.js +86 -86
- package/dist/solana/chain/SolanaChainInterface.d.ts +65 -65
- package/dist/solana/chain/SolanaChainInterface.js +125 -125
- package/dist/solana/chain/SolanaModule.d.ts +14 -14
- package/dist/solana/chain/SolanaModule.js +13 -13
- package/dist/solana/chain/modules/SolanaAddresses.d.ts +8 -8
- package/dist/solana/chain/modules/SolanaAddresses.js +22 -22
- package/dist/solana/chain/modules/SolanaBlocks.d.ts +28 -28
- package/dist/solana/chain/modules/SolanaBlocks.js +72 -72
- package/dist/solana/chain/modules/SolanaEvents.d.ts +68 -68
- package/dist/solana/chain/modules/SolanaEvents.js +225 -225
- package/dist/solana/chain/modules/SolanaFees.d.ts +121 -121
- package/dist/solana/chain/modules/SolanaFees.js +379 -379
- package/dist/solana/chain/modules/SolanaSignatures.d.ts +23 -23
- package/dist/solana/chain/modules/SolanaSignatures.js +39 -39
- package/dist/solana/chain/modules/SolanaSlots.d.ts +31 -31
- package/dist/solana/chain/modules/SolanaSlots.js +68 -68
- package/dist/solana/chain/modules/SolanaTokens.d.ts +136 -136
- package/dist/solana/chain/modules/SolanaTokens.js +248 -248
- package/dist/solana/chain/modules/SolanaTransactions.d.ts +124 -124
- package/dist/solana/chain/modules/SolanaTransactions.js +323 -323
- package/dist/solana/events/SolanaChainEvents.d.ts +88 -88
- package/dist/solana/events/SolanaChainEvents.js +256 -256
- package/dist/solana/events/SolanaChainEventsBrowser.d.ts +75 -75
- package/dist/solana/events/SolanaChainEventsBrowser.js +172 -172
- package/dist/solana/program/SolanaProgramBase.d.ts +40 -40
- package/dist/solana/program/SolanaProgramBase.js +43 -43
- package/dist/solana/program/SolanaProgramModule.d.ts +8 -8
- package/dist/solana/program/SolanaProgramModule.js +11 -11
- package/dist/solana/program/modules/SolanaProgramEvents.d.ts +53 -53
- package/dist/solana/program/modules/SolanaProgramEvents.js +114 -114
- package/dist/solana/swaps/SolanaSwapData.d.ts +71 -71
- package/dist/solana/swaps/SolanaSwapData.js +292 -292
- package/dist/solana/swaps/SolanaSwapModule.d.ts +10 -10
- package/dist/solana/swaps/SolanaSwapModule.js +11 -11
- package/dist/solana/swaps/SolanaSwapProgram.d.ts +224 -224
- package/dist/solana/swaps/SolanaSwapProgram.js +570 -567
- package/dist/solana/swaps/SwapTypeEnum.d.ts +11 -11
- package/dist/solana/swaps/SwapTypeEnum.js +42 -42
- package/dist/solana/swaps/modules/SolanaDataAccount.d.ts +94 -94
- package/dist/solana/swaps/modules/SolanaDataAccount.js +231 -231
- package/dist/solana/swaps/modules/SolanaLpVault.d.ts +71 -71
- package/dist/solana/swaps/modules/SolanaLpVault.js +173 -173
- package/dist/solana/swaps/modules/SwapClaim.d.ts +129 -129
- package/dist/solana/swaps/modules/SwapClaim.js +291 -291
- package/dist/solana/swaps/modules/SwapInit.d.ts +217 -217
- package/dist/solana/swaps/modules/SwapInit.js +519 -519
- package/dist/solana/swaps/modules/SwapRefund.d.ts +82 -82
- package/dist/solana/swaps/modules/SwapRefund.js +262 -262
- package/dist/solana/swaps/programIdl.json +945 -945
- package/dist/solana/swaps/programTypes.d.ts +943 -943
- package/dist/solana/swaps/programTypes.js +945 -945
- package/dist/solana/wallet/SolanaKeypairWallet.d.ts +9 -9
- package/dist/solana/wallet/SolanaKeypairWallet.js +33 -33
- package/dist/solana/wallet/SolanaSigner.d.ts +11 -11
- package/dist/solana/wallet/SolanaSigner.js +17 -17
- package/dist/utils/Utils.d.ts +53 -53
- package/dist/utils/Utils.js +170 -170
- package/package.json +41 -41
- package/src/index.ts +36 -36
- package/src/solana/SolanaChainType.ts +27 -27
- package/src/solana/SolanaChains.ts +23 -23
- package/src/solana/SolanaInitializer.ts +102 -102
- package/src/solana/btcrelay/SolanaBtcRelay.ts +589 -589
- package/src/solana/btcrelay/headers/SolanaBtcHeader.ts +57 -57
- package/src/solana/btcrelay/headers/SolanaBtcStoredHeader.ts +102 -102
- package/src/solana/btcrelay/program/programIdl.json +670 -670
- package/src/solana/chain/SolanaAction.ts +108 -108
- package/src/solana/chain/SolanaChainInterface.ts +192 -192
- package/src/solana/chain/SolanaModule.ts +20 -20
- package/src/solana/chain/modules/SolanaAddresses.ts +20 -20
- package/src/solana/chain/modules/SolanaBlocks.ts +78 -78
- package/src/solana/chain/modules/SolanaEvents.ts +256 -256
- package/src/solana/chain/modules/SolanaFees.ts +450 -450
- package/src/solana/chain/modules/SolanaSignatures.ts +39 -39
- package/src/solana/chain/modules/SolanaSlots.ts +82 -82
- package/src/solana/chain/modules/SolanaTokens.ts +307 -307
- package/src/solana/chain/modules/SolanaTransactions.ts +365 -365
- package/src/solana/events/SolanaChainEvents.ts +299 -299
- package/src/solana/events/SolanaChainEventsBrowser.ts +209 -209
- package/src/solana/program/SolanaProgramBase.ts +79 -79
- package/src/solana/program/SolanaProgramModule.ts +15 -15
- package/src/solana/program/modules/SolanaProgramEvents.ts +155 -155
- package/src/solana/swaps/SolanaSwapData.ts +430 -430
- package/src/solana/swaps/SolanaSwapModule.ts +16 -16
- package/src/solana/swaps/SolanaSwapProgram.ts +854 -849
- package/src/solana/swaps/SwapTypeEnum.ts +29 -29
- package/src/solana/swaps/modules/SolanaDataAccount.ts +307 -307
- package/src/solana/swaps/modules/SolanaLpVault.ts +215 -215
- package/src/solana/swaps/modules/SwapClaim.ts +389 -389
- package/src/solana/swaps/modules/SwapInit.ts +663 -663
- package/src/solana/swaps/modules/SwapRefund.ts +323 -323
- package/src/solana/swaps/programIdl.json +944 -944
- package/src/solana/swaps/programTypes.ts +1885 -1885
- package/src/solana/wallet/SolanaKeypairWallet.ts +36 -36
- package/src/solana/wallet/SolanaSigner.ts +24 -24
- package/src/utils/Utils.ts +180 -180
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import {PublicKey} from "@solana/web3.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export class SolanaAddresses {
|
|
5
|
-
|
|
6
|
-
///////////////////
|
|
7
|
-
//// Address utils
|
|
8
|
-
/**
|
|
9
|
-
* Checks whether an address is a valid Solana address (base58 encoded ed25519 public key)
|
|
10
|
-
*
|
|
11
|
-
* @param address
|
|
12
|
-
*/
|
|
13
|
-
static isValidAddress(address: string): boolean {
|
|
14
|
-
try {
|
|
15
|
-
return PublicKey.isOnCurve(address);
|
|
16
|
-
} catch (e) {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
1
|
+
import {PublicKey} from "@solana/web3.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export class SolanaAddresses {
|
|
5
|
+
|
|
6
|
+
///////////////////
|
|
7
|
+
//// Address utils
|
|
8
|
+
/**
|
|
9
|
+
* Checks whether an address is a valid Solana address (base58 encoded ed25519 public key)
|
|
10
|
+
*
|
|
11
|
+
* @param address
|
|
12
|
+
*/
|
|
13
|
+
static isValidAddress(address: string): boolean {
|
|
14
|
+
try {
|
|
15
|
+
return PublicKey.isOnCurve(address);
|
|
16
|
+
} catch (e) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
21
|
}
|
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
import {SolanaModule} from "../SolanaModule";
|
|
2
|
-
import {Commitment, ParsedAccountsModeBlockResponse} from "@solana/web3.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export class SolanaBlocks extends SolanaModule {
|
|
6
|
-
|
|
7
|
-
private blockCache: Map<number, Promise<ParsedAccountsModeBlockResponse>> = new Map<number, Promise<ParsedAccountsModeBlockResponse>>();
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Initiates a fetch of the block at specified slot & saves the fetch promise into a block cache
|
|
11
|
-
*
|
|
12
|
-
* @param slot
|
|
13
|
-
* @private
|
|
14
|
-
*/
|
|
15
|
-
private fetchAndSaveParsedBlock(slot: number): Promise<ParsedAccountsModeBlockResponse> {
|
|
16
|
-
const blockCacheData = this.connection.getParsedBlock(slot, {
|
|
17
|
-
transactionDetails: "none",
|
|
18
|
-
commitment: "confirmed",
|
|
19
|
-
rewards: false
|
|
20
|
-
});
|
|
21
|
-
this.blockCache.set(slot, blockCacheData);
|
|
22
|
-
blockCacheData.catch(e => {
|
|
23
|
-
if(this.blockCache.get(slot)==blockCacheData) this.blockCache.delete(slot);
|
|
24
|
-
throw e;
|
|
25
|
-
});
|
|
26
|
-
return blockCacheData;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
///////////////////
|
|
30
|
-
//// Blocks
|
|
31
|
-
/**
|
|
32
|
-
* Tries to find the latest existing block for a given commitment, skipping blocks that are not available, runs a
|
|
33
|
-
* search backwards from the latest slot for the given commitment and fails after 10 tries
|
|
34
|
-
*
|
|
35
|
-
* @param commitment
|
|
36
|
-
*/
|
|
37
|
-
public async findLatestParsedBlock(commitment: Commitment): Promise<{
|
|
38
|
-
block: ParsedAccountsModeBlockResponse,
|
|
39
|
-
slot: number
|
|
40
|
-
}> {
|
|
41
|
-
let slot = await this.root.Slots.getSlot(commitment);
|
|
42
|
-
|
|
43
|
-
for(let i=0;i<10;i++) {
|
|
44
|
-
const block = await this.getParsedBlock(slot).catch(e => {
|
|
45
|
-
if(e.toString().startsWith("SolanaJSONRPCError: failed to get block: Block not available for slot")) {
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
throw e;
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
if(block!=null) {
|
|
52
|
-
this.logger.debug("findLatestParsedBlock(): Found valid block, slot: "+slot+
|
|
53
|
-
" blockhash: "+block.blockhash+" tries: "+i);
|
|
54
|
-
return {
|
|
55
|
-
block,
|
|
56
|
-
slot
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
slot--;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
throw new Error("Ran out of tries trying to find a parsedBlock");
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Gets parsed block for a given slot, uses block cache if the block was already fetched before
|
|
68
|
-
*
|
|
69
|
-
* @param slot
|
|
70
|
-
*/
|
|
71
|
-
public getParsedBlock(slot: number): Promise<ParsedAccountsModeBlockResponse> {
|
|
72
|
-
let blockCacheData = this.blockCache.get(slot);
|
|
73
|
-
if(blockCacheData==null) {
|
|
74
|
-
blockCacheData = this.fetchAndSaveParsedBlock(slot);
|
|
75
|
-
}
|
|
76
|
-
return blockCacheData;
|
|
77
|
-
}
|
|
78
|
-
|
|
1
|
+
import {SolanaModule} from "../SolanaModule";
|
|
2
|
+
import {Commitment, ParsedAccountsModeBlockResponse} from "@solana/web3.js";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
export class SolanaBlocks extends SolanaModule {
|
|
6
|
+
|
|
7
|
+
private blockCache: Map<number, Promise<ParsedAccountsModeBlockResponse>> = new Map<number, Promise<ParsedAccountsModeBlockResponse>>();
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Initiates a fetch of the block at specified slot & saves the fetch promise into a block cache
|
|
11
|
+
*
|
|
12
|
+
* @param slot
|
|
13
|
+
* @private
|
|
14
|
+
*/
|
|
15
|
+
private fetchAndSaveParsedBlock(slot: number): Promise<ParsedAccountsModeBlockResponse> {
|
|
16
|
+
const blockCacheData = this.connection.getParsedBlock(slot, {
|
|
17
|
+
transactionDetails: "none",
|
|
18
|
+
commitment: "confirmed",
|
|
19
|
+
rewards: false
|
|
20
|
+
});
|
|
21
|
+
this.blockCache.set(slot, blockCacheData);
|
|
22
|
+
blockCacheData.catch(e => {
|
|
23
|
+
if(this.blockCache.get(slot)==blockCacheData) this.blockCache.delete(slot);
|
|
24
|
+
throw e;
|
|
25
|
+
});
|
|
26
|
+
return blockCacheData;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
///////////////////
|
|
30
|
+
//// Blocks
|
|
31
|
+
/**
|
|
32
|
+
* Tries to find the latest existing block for a given commitment, skipping blocks that are not available, runs a
|
|
33
|
+
* search backwards from the latest slot for the given commitment and fails after 10 tries
|
|
34
|
+
*
|
|
35
|
+
* @param commitment
|
|
36
|
+
*/
|
|
37
|
+
public async findLatestParsedBlock(commitment: Commitment): Promise<{
|
|
38
|
+
block: ParsedAccountsModeBlockResponse,
|
|
39
|
+
slot: number
|
|
40
|
+
}> {
|
|
41
|
+
let slot = await this.root.Slots.getSlot(commitment);
|
|
42
|
+
|
|
43
|
+
for(let i=0;i<10;i++) {
|
|
44
|
+
const block = await this.getParsedBlock(slot).catch(e => {
|
|
45
|
+
if(e.toString().startsWith("SolanaJSONRPCError: failed to get block: Block not available for slot")) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
throw e;
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
if(block!=null) {
|
|
52
|
+
this.logger.debug("findLatestParsedBlock(): Found valid block, slot: "+slot+
|
|
53
|
+
" blockhash: "+block.blockhash+" tries: "+i);
|
|
54
|
+
return {
|
|
55
|
+
block,
|
|
56
|
+
slot
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
slot--;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
throw new Error("Ran out of tries trying to find a parsedBlock");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Gets parsed block for a given slot, uses block cache if the block was already fetched before
|
|
68
|
+
*
|
|
69
|
+
* @param slot
|
|
70
|
+
*/
|
|
71
|
+
public getParsedBlock(slot: number): Promise<ParsedAccountsModeBlockResponse> {
|
|
72
|
+
let blockCacheData = this.blockCache.get(slot);
|
|
73
|
+
if(blockCacheData==null) {
|
|
74
|
+
blockCacheData = this.fetchAndSaveParsedBlock(slot);
|
|
75
|
+
}
|
|
76
|
+
return blockCacheData;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
79
|
}
|