@byreal-io/byreal-clmm-sdk 0.2.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.
- package/LICENSE +21 -0
- package/README.md +341 -0
- package/dist/esm/client/chain.d.ts +227 -0
- package/dist/esm/client/chain.d.ts.map +1 -0
- package/dist/esm/client/chain.js +1123 -0
- package/dist/esm/client/chain.js.map +1 -0
- package/dist/esm/client/index.d.ts +4 -0
- package/dist/esm/client/index.d.ts.map +1 -0
- package/dist/esm/client/index.js +4 -0
- package/dist/esm/client/index.js.map +1 -0
- package/dist/esm/client/models.d.ts +160 -0
- package/dist/esm/client/models.d.ts.map +1 -0
- package/dist/esm/client/models.js +2 -0
- package/dist/esm/client/models.js.map +1 -0
- package/dist/esm/client/utils.d.ts +103 -0
- package/dist/esm/client/utils.d.ts.map +1 -0
- package/dist/esm/client/utils.js +238 -0
- package/dist/esm/client/utils.js.map +1 -0
- package/dist/esm/constants.d.ts +19 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +27 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/instructions/baseInstruction.d.ts +74 -0
- package/dist/esm/instructions/baseInstruction.d.ts.map +1 -0
- package/dist/esm/instructions/baseInstruction.js +577 -0
- package/dist/esm/instructions/baseInstruction.js.map +1 -0
- package/dist/esm/instructions/constants.d.ts +29 -0
- package/dist/esm/instructions/constants.d.ts.map +1 -0
- package/dist/esm/instructions/constants.js +32 -0
- package/dist/esm/instructions/constants.js.map +1 -0
- package/dist/esm/instructions/getRawData.d.ts +60 -0
- package/dist/esm/instructions/getRawData.d.ts.map +1 -0
- package/dist/esm/instructions/getRawData.js +105 -0
- package/dist/esm/instructions/getRawData.js.map +1 -0
- package/dist/esm/instructions/index.d.ts +9 -0
- package/dist/esm/instructions/index.d.ts.map +1 -0
- package/dist/esm/instructions/index.js +9 -0
- package/dist/esm/instructions/index.js.map +1 -0
- package/dist/esm/instructions/instruction.d.ts +137 -0
- package/dist/esm/instructions/instruction.d.ts.map +1 -0
- package/dist/esm/instructions/instruction.js +152 -0
- package/dist/esm/instructions/instruction.js.map +1 -0
- package/dist/esm/instructions/layout.d.ts +217 -0
- package/dist/esm/instructions/layout.d.ts.map +1 -0
- package/dist/esm/instructions/layout.js +203 -0
- package/dist/esm/instructions/layout.js.map +1 -0
- package/dist/esm/instructions/libs/marshmallow/bufferLayout.d.ts +107 -0
- package/dist/esm/instructions/libs/marshmallow/bufferLayout.d.ts.map +1 -0
- package/dist/esm/instructions/libs/marshmallow/bufferLayout.js +49 -0
- package/dist/esm/instructions/libs/marshmallow/bufferLayout.js.map +1 -0
- package/dist/esm/instructions/libs/marshmallow/index.d.ts +88 -0
- package/dist/esm/instructions/libs/marshmallow/index.d.ts.map +1 -0
- package/dist/esm/instructions/libs/marshmallow/index.js +256 -0
- package/dist/esm/instructions/libs/marshmallow/index.js.map +1 -0
- package/dist/esm/instructions/models.d.ts +39 -0
- package/dist/esm/instructions/models.d.ts.map +1 -0
- package/dist/esm/instructions/models.js +14 -0
- package/dist/esm/instructions/models.js.map +1 -0
- package/dist/esm/instructions/pda.d.ts +52 -0
- package/dist/esm/instructions/pda.d.ts.map +1 -0
- package/dist/esm/instructions/pda.js +47 -0
- package/dist/esm/instructions/pda.js.map +1 -0
- package/dist/esm/instructions/target/idl/byreal_amm_v3.json +7242 -0
- package/dist/esm/instructions/target/idl/byreal_amm_v3_test.json +7680 -0
- package/dist/esm/instructions/target/types/byreal_amm_v3.d.ts +5329 -0
- package/dist/esm/instructions/target/types/byreal_amm_v3.d.ts.map +1 -0
- package/dist/esm/instructions/target/types/byreal_amm_v3.js +2 -0
- package/dist/esm/instructions/target/types/byreal_amm_v3.js.map +1 -0
- package/dist/esm/instructions/target/types/raydium_amm_v3.d.ts +4149 -0
- package/dist/esm/instructions/target/types/raydium_amm_v3.d.ts.map +1 -0
- package/dist/esm/instructions/target/types/raydium_amm_v3.js +2 -0
- package/dist/esm/instructions/target/types/raydium_amm_v3.js.map +1 -0
- package/dist/esm/instructions/utils/binaryUtils.d.ts +11 -0
- package/dist/esm/instructions/utils/binaryUtils.d.ts.map +1 -0
- package/dist/esm/instructions/utils/binaryUtils.js +77 -0
- package/dist/esm/instructions/utils/binaryUtils.js.map +1 -0
- package/dist/esm/instructions/utils/fetchWalletTokenAccounts.d.ts +42 -0
- package/dist/esm/instructions/utils/fetchWalletTokenAccounts.d.ts.map +1 -0
- package/dist/esm/instructions/utils/fetchWalletTokenAccounts.js +63 -0
- package/dist/esm/instructions/utils/fetchWalletTokenAccounts.js.map +1 -0
- package/dist/esm/instructions/utils/getTickArrayBitmapExtension.d.ts +8 -0
- package/dist/esm/instructions/utils/getTickArrayBitmapExtension.d.ts.map +1 -0
- package/dist/esm/instructions/utils/getTickArrayBitmapExtension.js +22 -0
- package/dist/esm/instructions/utils/getTickArrayBitmapExtension.js.map +1 -0
- package/dist/esm/instructions/utils/getTickArrayInfo.d.ts +16 -0
- package/dist/esm/instructions/utils/getTickArrayInfo.d.ts.map +1 -0
- package/dist/esm/instructions/utils/getTickArrayInfo.js +75 -0
- package/dist/esm/instructions/utils/getTickArrayInfo.js.map +1 -0
- package/dist/esm/instructions/utils/index.d.ts +21 -0
- package/dist/esm/instructions/utils/index.d.ts.map +1 -0
- package/dist/esm/instructions/utils/index.js +21 -0
- package/dist/esm/instructions/utils/index.js.map +1 -0
- package/dist/esm/instructions/utils/liquidityMath.d.ts +30 -0
- package/dist/esm/instructions/utils/liquidityMath.d.ts.map +1 -0
- package/dist/esm/instructions/utils/liquidityMath.js +138 -0
- package/dist/esm/instructions/utils/liquidityMath.js.map +1 -0
- package/dist/esm/instructions/utils/mathUtils.d.ts +11 -0
- package/dist/esm/instructions/utils/mathUtils.d.ts.map +1 -0
- package/dist/esm/instructions/utils/mathUtils.js +36 -0
- package/dist/esm/instructions/utils/mathUtils.js.map +1 -0
- package/dist/esm/instructions/utils/models.d.ts +93 -0
- package/dist/esm/instructions/utils/models.d.ts.map +1 -0
- package/dist/esm/instructions/utils/models.js +13 -0
- package/dist/esm/instructions/utils/models.js.map +1 -0
- package/dist/esm/instructions/utils/poolStateUtils.d.ts +134 -0
- package/dist/esm/instructions/utils/poolStateUtils.d.ts.map +1 -0
- package/dist/esm/instructions/utils/poolStateUtils.js +137 -0
- package/dist/esm/instructions/utils/poolStateUtils.js.map +1 -0
- package/dist/esm/instructions/utils/poolUtils.d.ts +136 -0
- package/dist/esm/instructions/utils/poolUtils.d.ts.map +1 -0
- package/dist/esm/instructions/utils/poolUtils.js +219 -0
- package/dist/esm/instructions/utils/poolUtils.js.map +1 -0
- package/dist/esm/instructions/utils/position.d.ts +36 -0
- package/dist/esm/instructions/utils/position.d.ts.map +1 -0
- package/dist/esm/instructions/utils/position.js +86 -0
- package/dist/esm/instructions/utils/position.js.map +1 -0
- package/dist/esm/instructions/utils/sqrtPriceMath.d.ts +14 -0
- package/dist/esm/instructions/utils/sqrtPriceMath.d.ts.map +1 -0
- package/dist/esm/instructions/utils/sqrtPriceMath.js +168 -0
- package/dist/esm/instructions/utils/sqrtPriceMath.js.map +1 -0
- package/dist/esm/instructions/utils/swapMath.d.ts +48 -0
- package/dist/esm/instructions/utils/swapMath.d.ts.map +1 -0
- package/dist/esm/instructions/utils/swapMath.js +263 -0
- package/dist/esm/instructions/utils/swapMath.js.map +1 -0
- package/dist/esm/instructions/utils/tick.d.ts +106 -0
- package/dist/esm/instructions/utils/tick.d.ts.map +1 -0
- package/dist/esm/instructions/utils/tick.js +390 -0
- package/dist/esm/instructions/utils/tick.js.map +1 -0
- package/dist/esm/instructions/utils/tickArrayUtils.d.ts +50 -0
- package/dist/esm/instructions/utils/tickArrayUtils.d.ts.map +1 -0
- package/dist/esm/instructions/utils/tickArrayUtils.js +157 -0
- package/dist/esm/instructions/utils/tickArrayUtils.js.map +1 -0
- package/dist/esm/instructions/utils/tickMath.d.ts +18 -0
- package/dist/esm/instructions/utils/tickMath.d.ts.map +1 -0
- package/dist/esm/instructions/utils/tickMath.js +34 -0
- package/dist/esm/instructions/utils/tickMath.js.map +1 -0
- package/dist/esm/instructions/utils/tickarrayBitmap.d.ts +38 -0
- package/dist/esm/instructions/utils/tickarrayBitmap.d.ts.map +1 -0
- package/dist/esm/instructions/utils/tickarrayBitmap.js +157 -0
- package/dist/esm/instructions/utils/tickarrayBitmap.js.map +1 -0
- package/dist/esm/instructions/utils/transfer.d.ts +7 -0
- package/dist/esm/instructions/utils/transfer.d.ts.map +1 -0
- package/dist/esm/instructions/utils/transfer.js +78 -0
- package/dist/esm/instructions/utils/transfer.js.map +1 -0
- package/dist/esm/utils/accountInfo.d.ts +27 -0
- package/dist/esm/utils/accountInfo.d.ts.map +1 -0
- package/dist/esm/utils/accountInfo.js +80 -0
- package/dist/esm/utils/accountInfo.js.map +1 -0
- package/dist/esm/utils/checkV0TxSize.d.ts +8 -0
- package/dist/esm/utils/checkV0TxSize.d.ts.map +1 -0
- package/dist/esm/utils/checkV0TxSize.js +18 -0
- package/dist/esm/utils/checkV0TxSize.js.map +1 -0
- package/dist/esm/utils/estimateComputeUnits.d.ts +11 -0
- package/dist/esm/utils/estimateComputeUnits.d.ts.map +1 -0
- package/dist/esm/utils/estimateComputeUnits.js +48 -0
- package/dist/esm/utils/estimateComputeUnits.js.map +1 -0
- package/dist/esm/utils/generatePubKey.d.ts +10 -0
- package/dist/esm/utils/generatePubKey.d.ts.map +1 -0
- package/dist/esm/utils/generatePubKey.js +14 -0
- package/dist/esm/utils/generatePubKey.js.map +1 -0
- package/dist/esm/utils/index.d.ts +9 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +11 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/token.d.ts +9 -0
- package/dist/esm/utils/token.d.ts.map +1 -0
- package/dist/esm/utils/token.js +16 -0
- package/dist/esm/utils/token.js.map +1 -0
- package/dist/esm/utils/transactionUtils.d.ts +84 -0
- package/dist/esm/utils/transactionUtils.d.ts.map +1 -0
- package/dist/esm/utils/transactionUtils.js +138 -0
- package/dist/esm/utils/transactionUtils.js.map +1 -0
- package/dist/esm/utils/validateAndParsePublicKey.d.ts +15 -0
- package/dist/esm/utils/validateAndParsePublicKey.d.ts.map +1 -0
- package/dist/esm/utils/validateAndParsePublicKey.js +42 -0
- package/dist/esm/utils/validateAndParsePublicKey.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './accountInfo.js';
|
|
2
|
+
export * from './validateAndParsePublicKey.js';
|
|
3
|
+
export * from './transactionUtils.js';
|
|
4
|
+
export * from './checkV0TxSize.js';
|
|
5
|
+
export * from './estimateComputeUnits.js';
|
|
6
|
+
export * from './generatePubKey.js';
|
|
7
|
+
export * from './token.js';
|
|
8
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAE3B,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './accountInfo.js';
|
|
2
|
+
export * from './validateAndParsePublicKey.js';
|
|
3
|
+
export * from './transactionUtils.js';
|
|
4
|
+
export * from './checkV0TxSize.js';
|
|
5
|
+
export * from './estimateComputeUnits.js';
|
|
6
|
+
export * from './generatePubKey.js';
|
|
7
|
+
export * from './token.js';
|
|
8
|
+
export async function sleep(ms) {
|
|
9
|
+
new Promise((resolve) => setTimeout(resolve, ms));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAE3B,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,EAAU;IACpC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Connection } from '@solana/web3.js';
|
|
2
|
+
/**
|
|
3
|
+
* Check if a mint is Token2022
|
|
4
|
+
* @param mintAddress token mint address
|
|
5
|
+
* @param connection Solana connection
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export declare function isToken2022(mintAddress: string, connection: Connection): Promise<boolean>;
|
|
9
|
+
//# sourceMappingURL=token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/utils/token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAa,MAAM,iBAAiB,CAAC;AAExD;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAK/F"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TOKEN_2022_PROGRAM_ID } from '@solana/spl-token';
|
|
2
|
+
import { PublicKey } from '@solana/web3.js';
|
|
3
|
+
/**
|
|
4
|
+
* Check if a mint is Token2022
|
|
5
|
+
* @param mintAddress token mint address
|
|
6
|
+
* @param connection Solana connection
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export async function isToken2022(mintAddress, connection) {
|
|
10
|
+
const mintPubkey = new PublicKey(mintAddress);
|
|
11
|
+
const info = await connection.getAccountInfo(mintPubkey);
|
|
12
|
+
if (!info)
|
|
13
|
+
return false;
|
|
14
|
+
return info.owner.toBase58() === TOKEN_2022_PROGRAM_ID.toBase58();
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/utils/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB,EAAE,UAAsB;IAC3E,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,qBAAqB,CAAC,QAAQ,EAAE,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Connection, PublicKey, Signer, TransactionInstruction, VersionedTransaction } from '@solana/web3.js';
|
|
2
|
+
export declare const DEFAULT_COMPUTE_UNIT_PRICE = 50000;
|
|
3
|
+
export type IMakeTransactionOptions = {
|
|
4
|
+
/**
|
|
5
|
+
* Compute unit limit
|
|
6
|
+
*/
|
|
7
|
+
computeUnitLimit?: number;
|
|
8
|
+
/**
|
|
9
|
+
* Compute unit price (microLamports)
|
|
10
|
+
*/
|
|
11
|
+
computeUnitPrice?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Whether to automatically add compute budget instructions
|
|
14
|
+
*/
|
|
15
|
+
addComputeBudget?: boolean;
|
|
16
|
+
} & /**
|
|
17
|
+
* maxFee and exactFee are mutually exclusive type definitions
|
|
18
|
+
* maxFee: Maximum transaction fee (SOL)
|
|
19
|
+
* exactFee: Exact transaction fee (SOL)
|
|
20
|
+
*/ ({
|
|
21
|
+
maxFee: number;
|
|
22
|
+
exactFee?: never;
|
|
23
|
+
} | {
|
|
24
|
+
maxFee?: never;
|
|
25
|
+
exactFee: number;
|
|
26
|
+
} | {
|
|
27
|
+
maxFee?: undefined;
|
|
28
|
+
exactFee?: undefined;
|
|
29
|
+
});
|
|
30
|
+
export type ISendTransactionOptions = {
|
|
31
|
+
/**
|
|
32
|
+
* Skip preflight
|
|
33
|
+
*/
|
|
34
|
+
skipPreflight?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Commit level
|
|
37
|
+
*/
|
|
38
|
+
preflightCommitment?: 'processed' | 'confirmed' | 'finalized';
|
|
39
|
+
/**
|
|
40
|
+
* Maximum retry times
|
|
41
|
+
*/
|
|
42
|
+
maxRetries?: number;
|
|
43
|
+
/**
|
|
44
|
+
* Transaction confirmation timeout (milliseconds)
|
|
45
|
+
*/
|
|
46
|
+
confirmationTimeout?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Transaction confirmation retry interval (milliseconds)
|
|
49
|
+
*/
|
|
50
|
+
confirmationRetryInterval?: number;
|
|
51
|
+
/**
|
|
52
|
+
* Transaction confirmation retry times
|
|
53
|
+
*/
|
|
54
|
+
confirmationRetries?: number;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Create transaction object
|
|
58
|
+
* @param connection - Solana connection instance
|
|
59
|
+
* @param payerPublicKey - Payer public key
|
|
60
|
+
* @param instructions - Transaction instruction list
|
|
61
|
+
* @param options - Transaction options
|
|
62
|
+
* @param signers - Additional signers (usually new Keypairs created by the program)
|
|
63
|
+
* @returns Transaction object
|
|
64
|
+
*/
|
|
65
|
+
export declare function makeTransaction(params: {
|
|
66
|
+
connection: Connection;
|
|
67
|
+
payerPublicKey: PublicKey;
|
|
68
|
+
instructions: TransactionInstruction[];
|
|
69
|
+
signers?: Signer[];
|
|
70
|
+
options?: IMakeTransactionOptions;
|
|
71
|
+
}): Promise<VersionedTransaction>;
|
|
72
|
+
/**
|
|
73
|
+
* Generic function for sending transactions, supporting front-end wallet signatures
|
|
74
|
+
* @param connection - Solana connection instance
|
|
75
|
+
* @param signTx - Method for signing transactions, usually calling the signTransaction method of the plugin wallet and signing with the new Keypair created by the program
|
|
76
|
+
* @param options - Transaction options
|
|
77
|
+
* @returns Transaction hash
|
|
78
|
+
*/
|
|
79
|
+
export declare function sendTransaction(params: {
|
|
80
|
+
connection: Connection;
|
|
81
|
+
signTx: () => Promise<VersionedTransaction>;
|
|
82
|
+
options?: ISendTransactionOptions;
|
|
83
|
+
}): Promise<string>;
|
|
84
|
+
//# sourceMappingURL=transactionUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,SAAS,EACT,MAAM,EACN,sBAAsB,EAEtB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAIzB,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG;;;;GAID,CAAC,CACA;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GACpC;IAAE,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,CAC/C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,mBAAmB,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;IAC9D;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE;IAC5C,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,SAAS,CAAC;IAC1B,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,uBAAuB,CAAC;CACnC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA8DhC;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE;IAC5C,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,uBAAuB,CAAC;CACnC,GAAG,OAAO,CAAC,MAAM,CAAC,CA2ClB"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { ComputeBudgetProgram, TransactionMessage, VersionedTransaction, } from '@solana/web3.js';
|
|
2
|
+
import { estimateComputeUnits } from './estimateComputeUnits.js';
|
|
3
|
+
export const DEFAULT_COMPUTE_UNIT_PRICE = 50000;
|
|
4
|
+
/**
|
|
5
|
+
* Create transaction object
|
|
6
|
+
* @param connection - Solana connection instance
|
|
7
|
+
* @param payerPublicKey - Payer public key
|
|
8
|
+
* @param instructions - Transaction instruction list
|
|
9
|
+
* @param options - Transaction options
|
|
10
|
+
* @param signers - Additional signers (usually new Keypairs created by the program)
|
|
11
|
+
* @returns Transaction object
|
|
12
|
+
*/
|
|
13
|
+
export async function makeTransaction(params) {
|
|
14
|
+
const { connection, payerPublicKey, instructions, options = {}, signers = [] } = params;
|
|
15
|
+
const { computeUnitPrice = DEFAULT_COMPUTE_UNIT_PRICE, addComputeBudget = true, maxFee, exactFee } = options;
|
|
16
|
+
const { blockhash } = await connection.getLatestBlockhash();
|
|
17
|
+
const finalInstructions = [];
|
|
18
|
+
if (addComputeBudget) {
|
|
19
|
+
const computeUnitLimit = options.computeUnitLimit || (await estimateComputeUnits(connection, instructions, payerPublicKey, blockhash));
|
|
20
|
+
console.info(`Compute unit limit: ${computeUnitLimit}`);
|
|
21
|
+
// If maxFee is set, check if computeUnitPrice needs to be adjusted
|
|
22
|
+
let finalComputeUnitPrice = computeUnitPrice;
|
|
23
|
+
if (maxFee !== undefined) {
|
|
24
|
+
// Convert maxFee from SOL to microLamports
|
|
25
|
+
// 1 SOL = 10^9 lamports, 1 lamport = 10^6 microLamports
|
|
26
|
+
const maxFeeInMicroLamports = maxFee * 1_000_000_000_000_000;
|
|
27
|
+
// Calculate estimated fee under current settings
|
|
28
|
+
const estimatedFeeInMicroLamports = computeUnitLimit * computeUnitPrice;
|
|
29
|
+
// If estimated fee exceeds the maximum limit, adjust computeUnitPrice
|
|
30
|
+
if (estimatedFeeInMicroLamports > maxFeeInMicroLamports) {
|
|
31
|
+
finalComputeUnitPrice = Math.floor(maxFeeInMicroLamports / computeUnitLimit);
|
|
32
|
+
console.info(`Adjust compute unit price to meet maximum fee limit: ${finalComputeUnitPrice} microLamports`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else if (typeof exactFee === 'number') {
|
|
36
|
+
// Convert exactFee from SOL to microLamports
|
|
37
|
+
const exactFeeInMicroLamports = exactFee * 1_000_000_000_000_000;
|
|
38
|
+
// Compute unit price = exact fee / compute unit limit
|
|
39
|
+
finalComputeUnitPrice = Math.ceil(exactFeeInMicroLamports / computeUnitLimit);
|
|
40
|
+
}
|
|
41
|
+
finalInstructions.push(ComputeBudgetProgram.setComputeUnitLimit({ units: computeUnitLimit }), ComputeBudgetProgram.setComputeUnitPrice({ microLamports: finalComputeUnitPrice }));
|
|
42
|
+
}
|
|
43
|
+
// Add other instructions after compute budget
|
|
44
|
+
finalInstructions.push(...instructions);
|
|
45
|
+
// Create transaction message
|
|
46
|
+
const transactionMessage = new TransactionMessage({
|
|
47
|
+
payerKey: payerPublicKey,
|
|
48
|
+
recentBlockhash: blockhash,
|
|
49
|
+
instructions: finalInstructions,
|
|
50
|
+
});
|
|
51
|
+
// Compile to v0 message and create VersionedTransaction
|
|
52
|
+
const transaction = new VersionedTransaction(transactionMessage.compileToV0Message());
|
|
53
|
+
// Sign with additional signers first
|
|
54
|
+
if (signers.length > 0) {
|
|
55
|
+
transaction.sign(signers);
|
|
56
|
+
}
|
|
57
|
+
return transaction;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Generic function for sending transactions, supporting front-end wallet signatures
|
|
61
|
+
* @param connection - Solana connection instance
|
|
62
|
+
* @param signTx - Method for signing transactions, usually calling the signTransaction method of the plugin wallet and signing with the new Keypair created by the program
|
|
63
|
+
* @param options - Transaction options
|
|
64
|
+
* @returns Transaction hash
|
|
65
|
+
*/
|
|
66
|
+
export async function sendTransaction(params) {
|
|
67
|
+
const { connection, options = {}, signTx } = params;
|
|
68
|
+
// Set default options
|
|
69
|
+
const { skipPreflight = false, preflightCommitment = 'confirmed', maxRetries = 3, confirmationTimeout = 30000, confirmationRetryInterval = 2000, confirmationRetries = 10, } = options;
|
|
70
|
+
const signedTx = await signTx?.();
|
|
71
|
+
// Send transaction
|
|
72
|
+
const txid = await connection.sendRawTransaction(signedTx.serialize(), {
|
|
73
|
+
skipPreflight,
|
|
74
|
+
preflightCommitment,
|
|
75
|
+
maxRetries,
|
|
76
|
+
});
|
|
77
|
+
console.info(`Transaction sent: ${txid}`);
|
|
78
|
+
try {
|
|
79
|
+
// Solution 1: Use connection.confirmTransaction
|
|
80
|
+
await connection.confirmTransaction(txid, 'confirmed');
|
|
81
|
+
console.info(`Transaction confirmed: ${txid}`);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
console.warn(`Transaction confirmation failed, falling back to polling: ${err.message}`);
|
|
85
|
+
// Solution 2: If confirmTransaction fails, fallback to optimized polling
|
|
86
|
+
const confirmed = await confirmTransactionWithOptimizedPolling(connection, txid, {
|
|
87
|
+
confirmationTimeout,
|
|
88
|
+
confirmationRetryInterval,
|
|
89
|
+
confirmationRetries,
|
|
90
|
+
});
|
|
91
|
+
if (!confirmed) {
|
|
92
|
+
console.warn(`Transaction may not be confirmed: ${txid}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return txid;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Optimized polling confirmation method - as a fallback solution
|
|
99
|
+
*/
|
|
100
|
+
async function confirmTransactionWithOptimizedPolling(connection, txid, options) {
|
|
101
|
+
const { confirmationTimeout, confirmationRetryInterval, confirmationRetries } = options;
|
|
102
|
+
const startTime = Date.now();
|
|
103
|
+
let confirmed = false;
|
|
104
|
+
let retries = confirmationRetries;
|
|
105
|
+
// Use exponential backoff algorithm to reduce RPC call frequency
|
|
106
|
+
let currentInterval = confirmationRetryInterval;
|
|
107
|
+
const maxInterval = 5000; // Maximum interval 5 seconds
|
|
108
|
+
const backoffMultiplier = 1.5;
|
|
109
|
+
while (!confirmed && retries > 0 && Date.now() - startTime < confirmationTimeout) {
|
|
110
|
+
try {
|
|
111
|
+
// Use getSignatureStatuses for batch query (if there are multiple transactions to query together)
|
|
112
|
+
const statuses = await connection.getSignatureStatuses([txid]);
|
|
113
|
+
const status = statuses.value[0];
|
|
114
|
+
if (status && status.confirmationStatus === 'confirmed') {
|
|
115
|
+
confirmed = true;
|
|
116
|
+
}
|
|
117
|
+
else if (status && status.err) {
|
|
118
|
+
// If transaction failed, exit immediately
|
|
119
|
+
console.error(`Transaction failed: ${JSON.stringify(status.err)}`);
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
// Exponential backoff: gradually increase polling interval
|
|
124
|
+
await new Promise((resolve) => setTimeout(resolve, currentInterval));
|
|
125
|
+
currentInterval = Math.min(currentInterval * backoffMultiplier, maxInterval);
|
|
126
|
+
retries--;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
console.warn(`Failed to check transaction status, reason: ${err.message}`);
|
|
131
|
+
retries--;
|
|
132
|
+
await new Promise((resolve) => setTimeout(resolve, currentInterval));
|
|
133
|
+
currentInterval = Math.min(currentInterval * backoffMultiplier, maxInterval);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return confirmed;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=transactionUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionUtils.js","sourceRoot":"","sources":["../../../src/utils/transactionUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
2
|
+
export type PublicKeyish = PublicKey | string;
|
|
3
|
+
export declare function tryParsePublicKey(v: string): PublicKey | string;
|
|
4
|
+
export declare function solToWSol(mint: PublicKeyish): PublicKey;
|
|
5
|
+
/**
|
|
6
|
+
* Validate and parse public key
|
|
7
|
+
*
|
|
8
|
+
* @param publicKey Public key
|
|
9
|
+
* @param solToWSol Whether to convert SOL to WSOL
|
|
10
|
+
*/
|
|
11
|
+
export declare function validateAndParsePublicKey({ publicKey: orgPubKey, solToWSol, }: {
|
|
12
|
+
publicKey: PublicKeyish;
|
|
13
|
+
solToWSol?: boolean;
|
|
14
|
+
}): PublicKey;
|
|
15
|
+
//# sourceMappingURL=validateAndParsePublicKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateAndParsePublicKey.d.ts","sourceRoot":"","sources":["../../../src/utils/validateAndParsePublicKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9C,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM/D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,SAAS,EAAE,SAAS,EACpB,SAAS,GACV,EAAE;IACD,SAAS,EAAE,YAAY,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,SAAS,CAqBZ"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
2
|
+
import { SOLMint, WSOLMint } from '../constants.js';
|
|
3
|
+
export function tryParsePublicKey(v) {
|
|
4
|
+
try {
|
|
5
|
+
return new PublicKey(v);
|
|
6
|
+
}
|
|
7
|
+
catch (e) {
|
|
8
|
+
return v;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function solToWSol(mint) {
|
|
12
|
+
return validateAndParsePublicKey({ publicKey: mint, solToWSol: true });
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Validate and parse public key
|
|
16
|
+
*
|
|
17
|
+
* @param publicKey Public key
|
|
18
|
+
* @param solToWSol Whether to convert SOL to WSOL
|
|
19
|
+
*/
|
|
20
|
+
export function validateAndParsePublicKey({ publicKey: orgPubKey, solToWSol, }) {
|
|
21
|
+
const publicKey = tryParsePublicKey(orgPubKey.toString());
|
|
22
|
+
if (publicKey instanceof PublicKey) {
|
|
23
|
+
if (solToWSol && publicKey.equals(SOLMint))
|
|
24
|
+
return WSOLMint;
|
|
25
|
+
return publicKey;
|
|
26
|
+
}
|
|
27
|
+
if (solToWSol && publicKey.toString() === SOLMint.toBase58())
|
|
28
|
+
return WSOLMint;
|
|
29
|
+
if (typeof publicKey === 'string') {
|
|
30
|
+
if (publicKey === PublicKey.default.toBase58())
|
|
31
|
+
return PublicKey.default;
|
|
32
|
+
try {
|
|
33
|
+
const key = new PublicKey(publicKey);
|
|
34
|
+
return key;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
throw new Error('invalid public key');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
throw new Error('invalid public key');
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=validateAndParsePublicKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateAndParsePublicKey.js","sourceRoot":"","sources":["../../../src/utils/validateAndParsePublicKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIpD,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,IAAI,CAAC;QACH,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAkB;IAC1C,OAAO,yBAAyB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,EACxC,SAAS,EAAE,SAAS,EACpB,SAAS,GAIV;IACC,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE1D,IAAI,SAAS,YAAY,SAAS,EAAE,CAAC;QACnC,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC5D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,QAAQ,EAAE;QAAE,OAAO,QAAQ,CAAC;IAE9E,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,SAAS,KAAK,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE;YAAE,OAAO,SAAS,CAAC,OAAO,CAAC;QACzE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACrC,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACxC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@byreal-io/byreal-clmm-sdk",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Byreal CLMM SDK for Solana",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": "Byreal Team (https://github.com/byreal-git)",
|
|
8
|
+
"homepage": "https://github.com/byreal-git/byreal-clmm-sdk",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/byreal-git/byreal-clmm-sdk.git"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"solana",
|
|
15
|
+
"clmm",
|
|
16
|
+
"concentrated-liquidity",
|
|
17
|
+
"defi",
|
|
18
|
+
"dex",
|
|
19
|
+
"amm",
|
|
20
|
+
"sdk"
|
|
21
|
+
],
|
|
22
|
+
"main": "./dist/esm/index.js",
|
|
23
|
+
"types": "./dist/esm/index.d.ts",
|
|
24
|
+
"exports": {
|
|
25
|
+
"./package.json": "./package.json",
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./dist/esm/index.d.ts",
|
|
28
|
+
"import": "./dist/esm/index.js",
|
|
29
|
+
"default": "./dist/esm/index.js"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist",
|
|
34
|
+
"README.md",
|
|
35
|
+
"LICENSE"
|
|
36
|
+
],
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public"
|
|
39
|
+
},
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=18.0.0"
|
|
42
|
+
},
|
|
43
|
+
"scripts": {
|
|
44
|
+
"clean": "rm -rf dist",
|
|
45
|
+
"build": "npm run clean && tsc",
|
|
46
|
+
"prepublishOnly": "npm run build",
|
|
47
|
+
"postversion": "git push && git push --tags",
|
|
48
|
+
"test": "vitest"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@coral-xyz/anchor": "^0.31.1",
|
|
52
|
+
"@noble/hashes": "^1.8.0",
|
|
53
|
+
"@solana/buffer-layout": "^4.0.1",
|
|
54
|
+
"@solana/spl-token": "^0.4.14",
|
|
55
|
+
"@solana/web3.js": "^1.98.4",
|
|
56
|
+
"bn.js": "^5.2.1",
|
|
57
|
+
"bs58": "^6.0.0",
|
|
58
|
+
"decimal.js": "^10.5.0",
|
|
59
|
+
"lodash-es": "^4.17.21"
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"dotenv": "^16.5.0",
|
|
63
|
+
"typescript": "~5.7.2",
|
|
64
|
+
"vitest": "^3.0.9"
|
|
65
|
+
}
|
|
66
|
+
}
|