@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,32 @@
|
|
|
1
|
+
import BN from 'bn.js';
|
|
2
|
+
export const ZERO = new BN(0);
|
|
3
|
+
export const ONE = new BN(1);
|
|
4
|
+
export const NEGATIVE_ONE = new BN(-1);
|
|
5
|
+
export const Q64 = new BN(1).shln(64);
|
|
6
|
+
export const Q128 = new BN(1).shln(128);
|
|
7
|
+
export const MaxU64 = Q64.sub(ONE);
|
|
8
|
+
export const U64Resolution = 64;
|
|
9
|
+
export const MaxUint128 = Q128.subn(1);
|
|
10
|
+
export const MIN_TICK = -443636;
|
|
11
|
+
export const MAX_TICK = -MIN_TICK;
|
|
12
|
+
export const MIN_SQRT_PRICE_X64 = new BN('4295048016');
|
|
13
|
+
export const MAX_SQRT_PRICE_X64 = new BN('79226673521066979257578248091');
|
|
14
|
+
export const MIN_SQRT_PRICE_X64_ADD_ONE = new BN('4295048017');
|
|
15
|
+
export const MAX_SQRT_PRICE_X64_SUB_ONE = new BN('79226673521066979257578248090');
|
|
16
|
+
export const BIT_PRECISION = 16;
|
|
17
|
+
export const LOG_B_2_X32 = '59543866431248';
|
|
18
|
+
export const LOG_B_P_ERR_MARGIN_LOWER_X64 = '184467440737095516';
|
|
19
|
+
export const LOG_B_P_ERR_MARGIN_UPPER_X64 = '15793534762490258745';
|
|
20
|
+
export const FEE_RATE_DENOMINATOR = new BN(10).pow(new BN(6));
|
|
21
|
+
export var Fee;
|
|
22
|
+
(function (Fee) {
|
|
23
|
+
Fee[Fee["rate_500"] = 500] = "rate_500";
|
|
24
|
+
Fee[Fee["rate_3000"] = 3000] = "rate_3000";
|
|
25
|
+
Fee[Fee["rate_10000"] = 10000] = "rate_10000";
|
|
26
|
+
})(Fee || (Fee = {}));
|
|
27
|
+
export const TICK_SPACINGS = {
|
|
28
|
+
[Fee.rate_500]: 10,
|
|
29
|
+
[Fee.rate_3000]: 60,
|
|
30
|
+
[Fee.rate_10000]: 200,
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/instructions/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvB,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvC,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEhC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC;AAChC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAO,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,kBAAkB,GAAO,IAAI,EAAE,CAAC,+BAA+B,CAAC,CAAC;AAE9E,MAAM,CAAC,MAAM,0BAA0B,GAAO,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,0BAA0B,GAAO,IAAI,EAAE,CAAC,+BAA+B,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAC5C,MAAM,CAAC,MAAM,4BAA4B,GAAG,oBAAoB,CAAC;AACjE,MAAM,CAAC,MAAM,4BAA4B,GAAG,sBAAsB,CAAC;AAEnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9D,MAAM,CAAN,IAAY,GAIX;AAJD,WAAY,GAAG;IACb,uCAAc,CAAA;IACd,0CAAgB,CAAA;IAChB,6CAAkB,CAAA;AACpB,CAAC,EAJW,GAAG,KAAH,GAAG,QAId;AACD,MAAM,CAAC,MAAM,aAAa,GAAgC;IACxD,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE;IAClB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE;IACnB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG;CACtB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { MintLayout } from '@solana/spl-token';
|
|
2
|
+
import { Connection, PublicKey } from '@solana/web3.js';
|
|
3
|
+
import { IAmmConfigLayout, IObservationLayout, IPersonalPositionLayout } from './layout.js';
|
|
4
|
+
import { IPoolLayoutWithId } from './models.js';
|
|
5
|
+
export declare class RawDataUtils {
|
|
6
|
+
/**
|
|
7
|
+
* Get position list for specified account
|
|
8
|
+
*/
|
|
9
|
+
static getRawPositionInfoListByUserAddress(params: {
|
|
10
|
+
connection: Connection;
|
|
11
|
+
programId: PublicKey;
|
|
12
|
+
userAddress: PublicKey;
|
|
13
|
+
}): Promise<IPersonalPositionLayout[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Get position information from specified position list
|
|
16
|
+
*/
|
|
17
|
+
static getRawPositionInfoByNftMint(params: {
|
|
18
|
+
connection: Connection;
|
|
19
|
+
programId: PublicKey;
|
|
20
|
+
nftMint: PublicKey;
|
|
21
|
+
}): Promise<IPersonalPositionLayout | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Get on-chain information for a single CLMM pool
|
|
24
|
+
*/
|
|
25
|
+
static getRawPoolInfoByPoolId(params: {
|
|
26
|
+
connection: Connection;
|
|
27
|
+
poolId: string | PublicKey;
|
|
28
|
+
}): Promise<IPoolLayoutWithId | null>;
|
|
29
|
+
/**
|
|
30
|
+
* Get on-chain information for specified token
|
|
31
|
+
*/
|
|
32
|
+
static getRawTokenInfoByMint(params: {
|
|
33
|
+
connection: Connection;
|
|
34
|
+
mintAddress: PublicKey;
|
|
35
|
+
}): Promise<(ReturnType<typeof MintLayout.decode> & {
|
|
36
|
+
owner: PublicKey;
|
|
37
|
+
}) | null>;
|
|
38
|
+
/**
|
|
39
|
+
* Get AMM configuration on-chain information
|
|
40
|
+
*/
|
|
41
|
+
static getRawAmmConfigByConfigId(params: {
|
|
42
|
+
connection: Connection;
|
|
43
|
+
configId: string | PublicKey;
|
|
44
|
+
}): Promise<(IAmmConfigLayout & {
|
|
45
|
+
configId: PublicKey;
|
|
46
|
+
owner: PublicKey;
|
|
47
|
+
}) | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Get observation account on-chain information
|
|
50
|
+
* Observation account is used to record historical data of price changes in the pool
|
|
51
|
+
*/
|
|
52
|
+
static getRawObservationByObservationId(params: {
|
|
53
|
+
connection: Connection;
|
|
54
|
+
observationId: string | PublicKey;
|
|
55
|
+
}): Promise<(IObservationLayout & {
|
|
56
|
+
observationId: PublicKey;
|
|
57
|
+
owner: PublicKey;
|
|
58
|
+
}) | null>;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=getRawData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRawData.d.ts","sourceRoot":"","sources":["../../../src/instructions/getRawData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EAIxB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKhD,qBAAa,YAAY;IACvB;;OAEG;WACU,mCAAmC,CAAC,MAAM,EAAE;QACvD,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,EAAE,SAAS,CAAC;QACrB,WAAW,EAAE,SAAS,CAAC;KACxB,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAmBtC;;OAEG;WACU,2BAA2B,CAAC,MAAM,EAAE;QAC/C,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,EAAE,SAAS,CAAC;QACrB,OAAO,EAAE,SAAS,CAAC;KACpB,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAS3C;;OAEG;WACU,sBAAsB,CAAC,MAAM,EAAE;QAC1C,UAAU,EAAE,UAAU,CAAC;QACvB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAwBrC;;OAEG;WACU,qBAAqB,CAAC,MAAM,EAAE;QACzC,UAAU,EAAE,UAAU,CAAC;QACvB,WAAW,EAAE,SAAS,CAAC;KACxB,GAAG,OAAO,CAAC,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG;QAAE,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAWjF;;OAEG;WACU,yBAAyB,CAAC,MAAM,EAAE;QAC7C,UAAU,EAAE,UAAU,CAAC;QACvB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9B,GAAG,OAAO,CAAC,CAAC,gBAAgB,GAAG;QAAE,QAAQ,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAiBlF;;;OAGG;WACU,gCAAgC,CAAC,MAAM,EAAE;QACpD,UAAU,EAAE,UAAU,CAAC;QACvB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;KACnC,GAAG,OAAO,CAAC,CAAC,kBAAkB,GAAG;QAAE,aAAa,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;CAgB1F"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { MintLayout } from '@solana/spl-token';
|
|
2
|
+
import { PublicKey } from '@solana/web3.js';
|
|
3
|
+
import BN from 'bn.js';
|
|
4
|
+
import { AmmConfigLayout, ObservationLayout, PersonalPositionLayout, PoolLayout, } from './layout.js';
|
|
5
|
+
import { getPdaPersonalPositionAddress } from './pda.js';
|
|
6
|
+
import { fetchWalletTokenAccounts } from './utils/fetchWalletTokenAccounts.js';
|
|
7
|
+
import { SqrtPriceMath } from './utils/index.js';
|
|
8
|
+
export class RawDataUtils {
|
|
9
|
+
/**
|
|
10
|
+
* Get position list for specified account
|
|
11
|
+
*/
|
|
12
|
+
static async getRawPositionInfoListByUserAddress(params) {
|
|
13
|
+
const { connection, programId, userAddress } = params;
|
|
14
|
+
const { rawTokenAccountInfos } = await fetchWalletTokenAccounts(connection, userAddress);
|
|
15
|
+
const balanceMints = rawTokenAccountInfos.filter((acc) => acc.accountInfo.amount.eq(new BN(1)));
|
|
16
|
+
const allPositionKey = balanceMints.map((acc) => getPdaPersonalPositionAddress(new PublicKey(programId), acc.accountInfo.mint).publicKey);
|
|
17
|
+
const accountInfo = await connection.getMultipleAccountsInfo(allPositionKey);
|
|
18
|
+
const allPosition = [];
|
|
19
|
+
accountInfo.forEach((positionRes) => {
|
|
20
|
+
if (!positionRes)
|
|
21
|
+
return;
|
|
22
|
+
const position = PersonalPositionLayout.decode(positionRes.data);
|
|
23
|
+
allPosition.push(position);
|
|
24
|
+
});
|
|
25
|
+
return allPosition;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get position information from specified position list
|
|
29
|
+
*/
|
|
30
|
+
static async getRawPositionInfoByNftMint(params) {
|
|
31
|
+
const { connection, programId, nftMint } = params;
|
|
32
|
+
const positionKey = getPdaPersonalPositionAddress(new PublicKey(programId), nftMint).publicKey;
|
|
33
|
+
const positionRes = await connection.getAccountInfo(positionKey);
|
|
34
|
+
if (!positionRes)
|
|
35
|
+
return null;
|
|
36
|
+
const position = PersonalPositionLayout.decode(positionRes.data);
|
|
37
|
+
return position;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get on-chain information for a single CLMM pool
|
|
41
|
+
*/
|
|
42
|
+
static async getRawPoolInfoByPoolId(params) {
|
|
43
|
+
const { connection, poolId } = params;
|
|
44
|
+
const poolPublicKey = new PublicKey(poolId);
|
|
45
|
+
const accountInfo = await connection.getAccountInfo(poolPublicKey);
|
|
46
|
+
if (!accountInfo || !accountInfo.data)
|
|
47
|
+
return null;
|
|
48
|
+
const poolRawInfo = PoolLayout.decode(accountInfo.data);
|
|
49
|
+
const currentPrice = SqrtPriceMath.sqrtPriceX64ToPrice(poolRawInfo.sqrtPriceX64, poolRawInfo.mintDecimalsA, poolRawInfo.mintDecimalsB).toNumber();
|
|
50
|
+
return {
|
|
51
|
+
...poolRawInfo,
|
|
52
|
+
currentPrice,
|
|
53
|
+
programId: accountInfo.owner,
|
|
54
|
+
poolId: poolPublicKey,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get on-chain information for specified token
|
|
59
|
+
*/
|
|
60
|
+
static async getRawTokenInfoByMint(params) {
|
|
61
|
+
const { connection, mintAddress } = params;
|
|
62
|
+
const accountInfo = await connection.getAccountInfo(mintAddress);
|
|
63
|
+
if (!accountInfo || !accountInfo.data)
|
|
64
|
+
return null;
|
|
65
|
+
const tokenInfo = MintLayout.decode(accountInfo.data);
|
|
66
|
+
return {
|
|
67
|
+
...tokenInfo,
|
|
68
|
+
owner: accountInfo.owner,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get AMM configuration on-chain information
|
|
73
|
+
*/
|
|
74
|
+
static async getRawAmmConfigByConfigId(params) {
|
|
75
|
+
const { connection, configId } = params;
|
|
76
|
+
const configPublicKey = new PublicKey(configId);
|
|
77
|
+
const accountInfo = await connection.getAccountInfo(configPublicKey);
|
|
78
|
+
if (!accountInfo || !accountInfo.data)
|
|
79
|
+
return null;
|
|
80
|
+
const configRawInfo = AmmConfigLayout.decode(accountInfo.data);
|
|
81
|
+
return {
|
|
82
|
+
...configRawInfo,
|
|
83
|
+
configId: configPublicKey,
|
|
84
|
+
owner: accountInfo.owner,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get observation account on-chain information
|
|
89
|
+
* Observation account is used to record historical data of price changes in the pool
|
|
90
|
+
*/
|
|
91
|
+
static async getRawObservationByObservationId(params) {
|
|
92
|
+
const { connection, observationId } = params;
|
|
93
|
+
const observationPublicKey = new PublicKey(observationId);
|
|
94
|
+
const accountInfo = await connection.getAccountInfo(observationPublicKey);
|
|
95
|
+
if (!accountInfo || !accountInfo.data)
|
|
96
|
+
return null;
|
|
97
|
+
const observationRawInfo = ObservationLayout.decode(accountInfo.data);
|
|
98
|
+
return {
|
|
99
|
+
...observationRawInfo,
|
|
100
|
+
observationId: observationPublicKey,
|
|
101
|
+
owner: accountInfo.owner,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=getRawData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRawData.js","sourceRoot":"","sources":["../../../src/instructions/getRawData.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './utils/index.js';
|
|
2
|
+
export * from './constants.js';
|
|
3
|
+
export * from './baseInstruction.js';
|
|
4
|
+
export * from './instruction.js';
|
|
5
|
+
export * from './models.js';
|
|
6
|
+
export * from './layout.js';
|
|
7
|
+
export * from './pda.js';
|
|
8
|
+
export * from './getRawData.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/instructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './utils/index.js';
|
|
2
|
+
export * from './constants.js';
|
|
3
|
+
export * from './baseInstruction.js';
|
|
4
|
+
export * from './instruction.js';
|
|
5
|
+
export * from './models.js';
|
|
6
|
+
export * from './layout.js';
|
|
7
|
+
export * from './pda.js';
|
|
8
|
+
export * from './getRawData.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/instructions/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
|
|
2
|
+
import BN from 'bn.js';
|
|
3
|
+
import { IPersonalPositionLayout } from './layout.js';
|
|
4
|
+
import { IPoolLayoutWithId, ITokenInfo } from './models.js';
|
|
5
|
+
export declare class Instruction {
|
|
6
|
+
static createPoolInstruction(props: {
|
|
7
|
+
programId: PublicKey;
|
|
8
|
+
owner: PublicKey;
|
|
9
|
+
poolManager: PublicKey;
|
|
10
|
+
mintA: ITokenInfo;
|
|
11
|
+
mintB: ITokenInfo;
|
|
12
|
+
ammConfigId: PublicKey;
|
|
13
|
+
initialPriceX64: BN;
|
|
14
|
+
openTime?: BN;
|
|
15
|
+
extendMintAccount?: PublicKey[];
|
|
16
|
+
}): Promise<{
|
|
17
|
+
instructions: TransactionInstruction[];
|
|
18
|
+
}>;
|
|
19
|
+
static openPositionFromLiquidityInstruction(params: {
|
|
20
|
+
poolInfo: IPoolLayoutWithId;
|
|
21
|
+
ownerInfo: {
|
|
22
|
+
feePayer: PublicKey;
|
|
23
|
+
wallet: PublicKey;
|
|
24
|
+
tokenAccountA: PublicKey;
|
|
25
|
+
tokenAccountB: PublicKey;
|
|
26
|
+
};
|
|
27
|
+
tickLower: number;
|
|
28
|
+
tickUpper: number;
|
|
29
|
+
liquidity: BN;
|
|
30
|
+
amountMaxA: BN;
|
|
31
|
+
amountMaxB: BN;
|
|
32
|
+
withMetadata: 'create' | 'no-create';
|
|
33
|
+
}): Promise<{
|
|
34
|
+
instructions: TransactionInstruction[];
|
|
35
|
+
signers: Signer[];
|
|
36
|
+
}>;
|
|
37
|
+
static openPositionFromBaseInstruction(params: {
|
|
38
|
+
poolInfo: IPoolLayoutWithId;
|
|
39
|
+
ownerInfo: {
|
|
40
|
+
feePayer: PublicKey;
|
|
41
|
+
wallet: PublicKey;
|
|
42
|
+
tokenAccountA: PublicKey;
|
|
43
|
+
tokenAccountB: PublicKey;
|
|
44
|
+
};
|
|
45
|
+
tickLower: number;
|
|
46
|
+
tickUpper: number;
|
|
47
|
+
base: 'MintA' | 'MintB';
|
|
48
|
+
baseAmount: BN;
|
|
49
|
+
otherAmountMax: BN;
|
|
50
|
+
withMetadata: 'create' | 'no-create';
|
|
51
|
+
}): Promise<{
|
|
52
|
+
instructions: TransactionInstruction[];
|
|
53
|
+
signers: Signer[];
|
|
54
|
+
}>;
|
|
55
|
+
static closePositionInstruction(params: {
|
|
56
|
+
programId: PublicKey;
|
|
57
|
+
nftMint: PublicKey;
|
|
58
|
+
ownerWallet: PublicKey;
|
|
59
|
+
}): Promise<{
|
|
60
|
+
instructions: TransactionInstruction[];
|
|
61
|
+
}>;
|
|
62
|
+
static increasePositionFromLiquidityInstructions(params: {
|
|
63
|
+
poolInfo: IPoolLayoutWithId;
|
|
64
|
+
ownerPosition: IPersonalPositionLayout;
|
|
65
|
+
ownerInfo: {
|
|
66
|
+
wallet: PublicKey;
|
|
67
|
+
tokenAccountA: PublicKey;
|
|
68
|
+
tokenAccountB: PublicKey;
|
|
69
|
+
};
|
|
70
|
+
liquidity: BN;
|
|
71
|
+
amountMaxA: BN;
|
|
72
|
+
amountMaxB: BN;
|
|
73
|
+
}): Promise<{
|
|
74
|
+
instructions: TransactionInstruction[];
|
|
75
|
+
}>;
|
|
76
|
+
static increasePositionFromBaseInstructions(params: {
|
|
77
|
+
poolInfo: IPoolLayoutWithId;
|
|
78
|
+
ownerPosition: IPersonalPositionLayout;
|
|
79
|
+
ownerInfo: {
|
|
80
|
+
wallet: PublicKey;
|
|
81
|
+
tokenAccountA: PublicKey;
|
|
82
|
+
tokenAccountB: PublicKey;
|
|
83
|
+
};
|
|
84
|
+
base: 'MintA' | 'MintB';
|
|
85
|
+
baseAmount: BN;
|
|
86
|
+
otherAmountMax: BN;
|
|
87
|
+
}): Promise<{
|
|
88
|
+
instructions: TransactionInstruction[];
|
|
89
|
+
}>;
|
|
90
|
+
static decreaseLiquidityInstructions(params: {
|
|
91
|
+
poolInfo: IPoolLayoutWithId;
|
|
92
|
+
ownerPosition: IPersonalPositionLayout;
|
|
93
|
+
ownerInfo: {
|
|
94
|
+
wallet: PublicKey;
|
|
95
|
+
tokenAccountA: PublicKey;
|
|
96
|
+
tokenAccountB: PublicKey;
|
|
97
|
+
};
|
|
98
|
+
liquidity: BN;
|
|
99
|
+
amountMinA: BN;
|
|
100
|
+
amountMinB: BN;
|
|
101
|
+
}): Promise<{
|
|
102
|
+
instructions: TransactionInstruction[];
|
|
103
|
+
}>;
|
|
104
|
+
static swapBaseInInstruction(params: {
|
|
105
|
+
poolInfo: IPoolLayoutWithId;
|
|
106
|
+
ownerInfo: {
|
|
107
|
+
wallet: PublicKey;
|
|
108
|
+
tokenAccountA: PublicKey;
|
|
109
|
+
tokenAccountB: PublicKey;
|
|
110
|
+
};
|
|
111
|
+
amount: BN;
|
|
112
|
+
otherAmountThreshold: BN;
|
|
113
|
+
sqrtPriceLimitX64: BN;
|
|
114
|
+
isInputMintA: boolean;
|
|
115
|
+
exTickArrayBitmap?: PublicKey;
|
|
116
|
+
tickArray: PublicKey[];
|
|
117
|
+
}): Promise<{
|
|
118
|
+
instructions: TransactionInstruction[];
|
|
119
|
+
}>;
|
|
120
|
+
static swapBaseOutInstruction(params: {
|
|
121
|
+
poolInfo: IPoolLayoutWithId;
|
|
122
|
+
ownerInfo: {
|
|
123
|
+
wallet: PublicKey;
|
|
124
|
+
tokenAccountA: PublicKey;
|
|
125
|
+
tokenAccountB: PublicKey;
|
|
126
|
+
};
|
|
127
|
+
amount: BN;
|
|
128
|
+
otherAmountThreshold: BN;
|
|
129
|
+
sqrtPriceLimitX64: BN;
|
|
130
|
+
isOutputMintA: boolean;
|
|
131
|
+
exTickArrayBitmap?: PublicKey;
|
|
132
|
+
tickArray: PublicKey[];
|
|
133
|
+
}): Promise<{
|
|
134
|
+
instructions: TransactionInstruction[];
|
|
135
|
+
}>;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=instruction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction.d.ts","sourceRoot":"","sources":["../../../src/instructions/instruction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { TOKEN_2022_PROGRAM_ID } from '@solana/spl-token';
|
|
2
|
+
import { Keypair, PublicKey } from '@solana/web3.js';
|
|
3
|
+
import { BaseInstruction } from './baseInstruction.js';
|
|
4
|
+
import { getATAAddress, getPdaExBitmapAccount, getPdaPersonalPositionAddress, getPdaProtocolPositionAddress, getPdaTickArrayAddress, } from './pda.js';
|
|
5
|
+
import { PoolUtils } from './utils/poolUtils.js';
|
|
6
|
+
import { TickUtils } from './utils/tick.js';
|
|
7
|
+
export class Instruction {
|
|
8
|
+
static async createPoolInstruction(props) {
|
|
9
|
+
// console.log('[clmm sdk] createPoolInstruction fn params:', JSON.stringify(props, null, 2));
|
|
10
|
+
const { programId, owner, poolManager, mintA, mintB, ammConfigId, initialPriceX64, extendMintAccount, openTime } = props;
|
|
11
|
+
const mintAAddress = new PublicKey(mintA.address);
|
|
12
|
+
const mintBAddress = new PublicKey(mintB.address);
|
|
13
|
+
const instruction = await BaseInstruction.createPoolInstruction(programId, owner, poolManager, ammConfigId, mintAAddress, new PublicKey(mintA.programId), mintBAddress, new PublicKey(mintB.programId), initialPriceX64, openTime, extendMintAccount);
|
|
14
|
+
return {
|
|
15
|
+
instructions: [instruction],
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
static async openPositionFromLiquidityInstruction(params) {
|
|
19
|
+
// console.log('[clmm sdk] openPositionFromLiquidityInstruction fn params:', JSON.stringify(params, null, 2));
|
|
20
|
+
const { poolInfo, ownerInfo, tickLower, tickUpper, liquidity, amountMaxA, amountMaxB, withMetadata } = params;
|
|
21
|
+
const signers = [];
|
|
22
|
+
const { programId, poolId, tickSpacing } = poolInfo;
|
|
23
|
+
const keypair = Keypair.generate();
|
|
24
|
+
signers.push(keypair);
|
|
25
|
+
const nftMintAccount = keypair.publicKey;
|
|
26
|
+
const tickArrayLowerStartIndex = TickUtils.getTickArrayStartIndexByTick(tickLower, tickSpacing);
|
|
27
|
+
const tickArrayUpperStartIndex = TickUtils.getTickArrayStartIndexByTick(tickUpper, tickSpacing);
|
|
28
|
+
const { publicKey: tickArrayLower } = getPdaTickArrayAddress(programId, poolId, tickArrayLowerStartIndex);
|
|
29
|
+
const { publicKey: tickArrayUpper } = getPdaTickArrayAddress(programId, poolId, tickArrayUpperStartIndex);
|
|
30
|
+
const { publicKey: positionNftAccount } = getATAAddress(ownerInfo.wallet, nftMintAccount, TOKEN_2022_PROGRAM_ID);
|
|
31
|
+
const { publicKey: personalPosition } = getPdaPersonalPositionAddress(programId, nftMintAccount);
|
|
32
|
+
const { publicKey: protocolPosition } = getPdaProtocolPositionAddress(programId, poolId, tickLower, tickUpper);
|
|
33
|
+
const instruction = await BaseInstruction.openPositionFromLiquidityInstruction22(programId, ownerInfo.feePayer, poolId, ownerInfo.wallet, nftMintAccount, positionNftAccount, protocolPosition, tickArrayLower, tickArrayUpper, personalPosition, ownerInfo.tokenAccountA, ownerInfo.tokenAccountB, poolInfo.vaultA, poolInfo.vaultB, poolInfo.mintA, poolInfo.mintB, tickLower, tickUpper, tickArrayLowerStartIndex, tickArrayUpperStartIndex, liquidity, amountMaxA, amountMaxB, withMetadata, PoolUtils.isOverflowDefaultTickarrayBitmap(tickSpacing, [tickArrayLowerStartIndex, tickArrayUpperStartIndex])
|
|
34
|
+
? getPdaExBitmapAccount(programId, poolId).publicKey
|
|
35
|
+
: undefined);
|
|
36
|
+
return {
|
|
37
|
+
signers,
|
|
38
|
+
instructions: [instruction],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
static async openPositionFromBaseInstruction(params) {
|
|
42
|
+
// console.log('[clmm sdk] openPositionFromBaseInstruction fn params:', JSON.stringify(params, null, 2));
|
|
43
|
+
const { poolInfo, ownerInfo, tickLower, tickUpper, base, baseAmount, otherAmountMax, withMetadata } = params;
|
|
44
|
+
const signers = [];
|
|
45
|
+
const { programId, poolId, tickSpacing } = poolInfo;
|
|
46
|
+
const keypair = Keypair.generate();
|
|
47
|
+
signers.push(keypair);
|
|
48
|
+
const nftMintAccount = keypair.publicKey;
|
|
49
|
+
const tickArrayLowerStartIndex = TickUtils.getTickArrayStartIndexByTick(tickLower, tickSpacing);
|
|
50
|
+
const tickArrayUpperStartIndex = TickUtils.getTickArrayStartIndexByTick(tickUpper, tickSpacing);
|
|
51
|
+
const { publicKey: tickArrayLower } = getPdaTickArrayAddress(programId, poolId, tickArrayLowerStartIndex);
|
|
52
|
+
const { publicKey: tickArrayUpper } = getPdaTickArrayAddress(programId, poolId, tickArrayUpperStartIndex);
|
|
53
|
+
const { publicKey: positionNftAccount } = getATAAddress(ownerInfo.wallet, nftMintAccount, TOKEN_2022_PROGRAM_ID);
|
|
54
|
+
const { publicKey: personalPosition } = getPdaPersonalPositionAddress(programId, nftMintAccount);
|
|
55
|
+
const { publicKey: protocolPosition } = getPdaProtocolPositionAddress(programId, poolId, tickLower, tickUpper);
|
|
56
|
+
const instruction = await BaseInstruction.openPositionFromBaseInstruction22(programId, ownerInfo.feePayer, poolId, ownerInfo.wallet, nftMintAccount, positionNftAccount, protocolPosition, tickArrayLower, tickArrayUpper, personalPosition, ownerInfo.tokenAccountA, ownerInfo.tokenAccountB, poolInfo.vaultA, poolInfo.vaultB, poolInfo.mintA, poolInfo.mintB, tickLower, tickUpper, tickArrayLowerStartIndex, tickArrayUpperStartIndex, withMetadata, base, baseAmount, otherAmountMax, PoolUtils.isOverflowDefaultTickarrayBitmap(tickSpacing, [tickArrayLowerStartIndex, tickArrayUpperStartIndex])
|
|
57
|
+
? getPdaExBitmapAccount(programId, poolId).publicKey
|
|
58
|
+
: undefined);
|
|
59
|
+
return {
|
|
60
|
+
instructions: [instruction],
|
|
61
|
+
signers,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
static async closePositionInstruction(params) {
|
|
65
|
+
// console.log('[clmm sdk] closePositionInstruction fn params:', JSON.stringify(params, null, 2));
|
|
66
|
+
const { programId, nftMint, ownerWallet } = params;
|
|
67
|
+
const positionNftAccount = getATAAddress(ownerWallet, nftMint, TOKEN_2022_PROGRAM_ID).publicKey;
|
|
68
|
+
const instruction = await BaseInstruction.closePositionInstruction(programId, ownerWallet, nftMint, positionNftAccount, true);
|
|
69
|
+
return {
|
|
70
|
+
instructions: [instruction],
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
static async increasePositionFromLiquidityInstructions(params) {
|
|
74
|
+
// console.log('[clmm sdk] increasePositionFromLiquidityInstructions fn params:', JSON.stringify(params, null, 2));
|
|
75
|
+
const { poolInfo, ownerPosition, ownerInfo, liquidity, amountMaxA, amountMaxB } = params;
|
|
76
|
+
const { programId, poolId, tickSpacing } = poolInfo;
|
|
77
|
+
const tickArrayLowerStartIndex = TickUtils.getTickArrayStartIndexByTick(ownerPosition.tickLower, tickSpacing);
|
|
78
|
+
const tickArrayUpperStartIndex = TickUtils.getTickArrayStartIndexByTick(ownerPosition.tickUpper, tickSpacing);
|
|
79
|
+
const { publicKey: tickArrayLower } = getPdaTickArrayAddress(programId, poolId, tickArrayLowerStartIndex);
|
|
80
|
+
const { publicKey: tickArrayUpper } = getPdaTickArrayAddress(programId, poolId, tickArrayUpperStartIndex);
|
|
81
|
+
const { publicKey: positionNftAccount } = getATAAddress(ownerInfo.wallet, ownerPosition.nftMint, TOKEN_2022_PROGRAM_ID);
|
|
82
|
+
const { publicKey: personalPosition } = getPdaPersonalPositionAddress(programId, ownerPosition.nftMint);
|
|
83
|
+
const { publicKey: protocolPosition } = getPdaProtocolPositionAddress(programId, poolId, ownerPosition.tickLower, ownerPosition.tickUpper);
|
|
84
|
+
const instruction = await BaseInstruction.increasePositionFromLiquidityInstruction(programId, ownerInfo.wallet, positionNftAccount, personalPosition, poolId, protocolPosition, tickArrayLower, tickArrayUpper, ownerInfo.tokenAccountA, ownerInfo.tokenAccountB, poolInfo.vaultA, poolInfo.vaultB, poolInfo.mintA, poolInfo.mintB, liquidity, amountMaxA, amountMaxB, PoolUtils.isOverflowDefaultTickarrayBitmap(tickSpacing, [tickArrayLowerStartIndex, tickArrayUpperStartIndex])
|
|
85
|
+
? getPdaExBitmapAccount(programId, poolId).publicKey
|
|
86
|
+
: undefined);
|
|
87
|
+
return {
|
|
88
|
+
instructions: [instruction],
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
static async increasePositionFromBaseInstructions(params) {
|
|
92
|
+
// console.log('[clmm sdk] increasePositionFromBaseInstructions fn params:', JSON.stringify(params, null, 2));
|
|
93
|
+
const { poolInfo, ownerPosition, ownerInfo, base, baseAmount, otherAmountMax } = params;
|
|
94
|
+
const { programId, poolId, tickSpacing } = poolInfo;
|
|
95
|
+
const tickArrayLowerStartIndex = TickUtils.getTickArrayStartIndexByTick(ownerPosition.tickLower, tickSpacing);
|
|
96
|
+
const tickArrayUpperStartIndex = TickUtils.getTickArrayStartIndexByTick(ownerPosition.tickUpper, tickSpacing);
|
|
97
|
+
const { publicKey: tickArrayLower } = getPdaTickArrayAddress(programId, poolId, tickArrayLowerStartIndex);
|
|
98
|
+
const { publicKey: tickArrayUpper } = getPdaTickArrayAddress(programId, poolId, tickArrayUpperStartIndex);
|
|
99
|
+
const { publicKey: positionNftAccount } = getATAAddress(ownerInfo.wallet, ownerPosition.nftMint, TOKEN_2022_PROGRAM_ID);
|
|
100
|
+
const { publicKey: personalPosition } = getPdaPersonalPositionAddress(programId, ownerPosition.nftMint);
|
|
101
|
+
const { publicKey: protocolPosition } = getPdaProtocolPositionAddress(programId, poolId, ownerPosition.tickLower, ownerPosition.tickUpper);
|
|
102
|
+
const instruction = await BaseInstruction.increasePositionFromBaseInstruction(programId, ownerInfo.wallet, positionNftAccount, personalPosition, poolId, protocolPosition, tickArrayLower, tickArrayUpper, ownerInfo.tokenAccountA, ownerInfo.tokenAccountB, poolInfo.vaultA, poolInfo.vaultB, poolInfo.mintA, poolInfo.mintB, base, baseAmount, otherAmountMax, PoolUtils.isOverflowDefaultTickarrayBitmap(tickSpacing, [tickArrayLowerStartIndex, tickArrayUpperStartIndex])
|
|
103
|
+
? getPdaExBitmapAccount(programId, poolId).publicKey
|
|
104
|
+
: undefined);
|
|
105
|
+
return {
|
|
106
|
+
instructions: [instruction],
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
static async decreaseLiquidityInstructions(params) {
|
|
110
|
+
// console.log('[clmm sdk] decreaseLiquidityInstructions fn params:', JSON.stringify(params, null, 2));
|
|
111
|
+
const { poolInfo, ownerPosition, ownerInfo, liquidity, amountMinA, amountMinB } = params;
|
|
112
|
+
const { programId, poolId, tickSpacing } = poolInfo;
|
|
113
|
+
const tickArrayLowerStartIndex = TickUtils.getTickArrayStartIndexByTick(ownerPosition.tickLower, tickSpacing);
|
|
114
|
+
const tickArrayUpperStartIndex = TickUtils.getTickArrayStartIndexByTick(ownerPosition.tickUpper, tickSpacing);
|
|
115
|
+
const { publicKey: tickArrayLower } = getPdaTickArrayAddress(programId, poolId, tickArrayLowerStartIndex);
|
|
116
|
+
const { publicKey: tickArrayUpper } = getPdaTickArrayAddress(programId, poolId, tickArrayUpperStartIndex);
|
|
117
|
+
const { publicKey: positionNftAccount } = getATAAddress(ownerInfo.wallet, ownerPosition.nftMint, TOKEN_2022_PROGRAM_ID);
|
|
118
|
+
const { publicKey: personalPosition } = getPdaPersonalPositionAddress(programId, ownerPosition.nftMint);
|
|
119
|
+
const { publicKey: protocolPosition } = getPdaProtocolPositionAddress(programId, poolId, ownerPosition.tickLower, ownerPosition.tickUpper);
|
|
120
|
+
const rewardAccounts = poolInfo.rewardInfos
|
|
121
|
+
.filter((info) => !info.openTime.isZero() && !info.tokenMint.equals(PublicKey.default))
|
|
122
|
+
.map((rewardInfo) => ({
|
|
123
|
+
poolRewardVault: rewardInfo.tokenVault,
|
|
124
|
+
ownerRewardVault: getATAAddress(ownerInfo.wallet, rewardInfo.tokenMint).publicKey,
|
|
125
|
+
rewardMint: rewardInfo.tokenMint,
|
|
126
|
+
}));
|
|
127
|
+
const instruction = await BaseInstruction.decreaseLiquidityInstruction(programId, ownerInfo.wallet, positionNftAccount, personalPosition, poolId, protocolPosition, tickArrayLower, tickArrayUpper, ownerInfo.tokenAccountA, ownerInfo.tokenAccountB, poolInfo.vaultA, poolInfo.vaultB, poolInfo.mintA, poolInfo.mintB, rewardAccounts, liquidity, amountMinA, amountMinB, PoolUtils.isOverflowDefaultTickarrayBitmap(tickSpacing, [tickArrayLowerStartIndex, tickArrayUpperStartIndex])
|
|
128
|
+
? getPdaExBitmapAccount(programId, poolId).publicKey
|
|
129
|
+
: undefined);
|
|
130
|
+
return {
|
|
131
|
+
instructions: [instruction],
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
static async swapBaseInInstruction(params) {
|
|
135
|
+
const { poolInfo, ownerInfo, amount, otherAmountThreshold, sqrtPriceLimitX64, exTickArrayBitmap, tickArray, isInputMintA, } = params;
|
|
136
|
+
const instruction = await BaseInstruction.swapInstruction(poolInfo.programId, ownerInfo.wallet, poolInfo.poolId, poolInfo.ammConfig, isInputMintA ? ownerInfo.tokenAccountA : ownerInfo.tokenAccountB, isInputMintA ? ownerInfo.tokenAccountB : ownerInfo.tokenAccountA, isInputMintA ? poolInfo.vaultA : poolInfo.vaultB, isInputMintA ? poolInfo.vaultB : poolInfo.vaultA, isInputMintA ? poolInfo.mintA : poolInfo.mintB, isInputMintA ? poolInfo.mintB : poolInfo.mintA, tickArray, poolInfo.observationId, amount, otherAmountThreshold, sqrtPriceLimitX64, true, exTickArrayBitmap);
|
|
137
|
+
return {
|
|
138
|
+
instructions: [instruction],
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
static async swapBaseOutInstruction(params) {
|
|
142
|
+
const { poolInfo, ownerInfo, amount, otherAmountThreshold, sqrtPriceLimitX64, exTickArrayBitmap, tickArray, isOutputMintA, } = params;
|
|
143
|
+
// For exact output, input and output are reversed
|
|
144
|
+
// If output is mintA, then input is mintB
|
|
145
|
+
const instruction = await BaseInstruction.swapInstruction(poolInfo.programId, ownerInfo.wallet, poolInfo.poolId, poolInfo.ammConfig, isOutputMintA ? ownerInfo.tokenAccountB : ownerInfo.tokenAccountA, isOutputMintA ? ownerInfo.tokenAccountA : ownerInfo.tokenAccountB, isOutputMintA ? poolInfo.vaultB : poolInfo.vaultA, isOutputMintA ? poolInfo.vaultA : poolInfo.vaultB, isOutputMintA ? poolInfo.mintB : poolInfo.mintA, isOutputMintA ? poolInfo.mintA : poolInfo.mintB, tickArray, poolInfo.observationId, amount, otherAmountThreshold, sqrtPriceLimitX64, false, // isBaseInput = false for exact output
|
|
146
|
+
exTickArrayBitmap);
|
|
147
|
+
return {
|
|
148
|
+
instructions: [instruction],
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=instruction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction.js","sourceRoot":"","sources":["../../../src/instructions/instruction.ts"],"names":[],"mappings":"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"}
|