@sonarwatch/portfolio-plugins 0.4.34 → 0.4.35
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/CHANGELOG.md +5 -1
- package/package.json +2 -2
- package/src/index.js +5 -1
- package/src/index.js.map +1 -1
- package/src/platforms.d.ts +1 -0
- package/src/platforms.js +6 -1
- package/src/platforms.js.map +1 -1
- package/src/plugins/orca/clmmPositionsFetcher.d.ts +3 -0
- package/src/plugins/orca/clmmPositionsFetcher.js +137 -0
- package/src/plugins/orca/clmmPositionsFetcher.js.map +1 -0
- package/src/plugins/orca/constants.d.ts +8 -0
- package/src/plugins/orca/constants.js +12 -0
- package/src/plugins/orca/constants.js.map +1 -0
- package/src/plugins/orca/filters.d.ts +3 -0
- package/src/plugins/orca/filters.js +12 -0
- package/src/plugins/orca/filters.js.map +1 -0
- package/src/plugins/orca/helpers.d.ts +17 -0
- package/src/plugins/orca/helpers.js +216 -0
- package/src/plugins/orca/helpers.js.map +1 -0
- package/src/plugins/orca/index.d.ts +3 -0
- package/src/plugins/orca/index.js +12 -0
- package/src/plugins/orca/index.js.map +1 -0
- package/src/plugins/orca/lpTokensJob.d.ts +3 -0
- package/src/plugins/orca/lpTokensJob.js +103 -0
- package/src/plugins/orca/lpTokensJob.js.map +1 -0
- package/src/plugins/orca/structs/aquafarms.d.ts +37 -0
- package/src/plugins/orca/structs/aquafarms.js +37 -0
- package/src/plugins/orca/structs/aquafarms.js.map +1 -0
- package/src/plugins/orca/structs/whirlpool.d.ts +59 -0
- package/src/plugins/orca/structs/whirlpool.js +53 -0
- package/src/plugins/orca/structs/whirlpool.js.map +1 -0
- package/src/plugins/orca/whirlpoolsJob.d.ts +3 -0
- package/src/plugins/orca/whirlpoolsJob.js +36 -0
- package/src/plugins/orca/whirlpoolsJob.js.map +1 -0
- package/src/plugins/raydium/clmmPositionsFetcher.d.ts +3 -0
- package/src/plugins/raydium/clmmPositionsFetcher.js +110 -0
- package/src/plugins/raydium/clmmPositionsFetcher.js.map +1 -0
- package/src/plugins/raydium/constants.d.ts +2 -0
- package/src/plugins/raydium/constants.js +3 -1
- package/src/plugins/raydium/constants.js.map +1 -1
- package/src/plugins/raydium/filters.js +3 -3
- package/src/plugins/raydium/filters.js.map +1 -1
- package/src/plugins/raydium/helpers.d.ts +40 -0
- package/src/plugins/raydium/helpers.js +280 -0
- package/src/plugins/raydium/helpers.js.map +1 -0
- package/src/plugins/raydium/index.js +2 -1
- package/src/plugins/raydium/index.js.map +1 -1
- package/src/plugins/raydium/lpTokensJob.js +7 -13
- package/src/plugins/raydium/lpTokensJob.js.map +1 -1
- package/src/plugins/raydium/{structs.d.ts → structs/amms.d.ts} +0 -44
- package/src/plugins/raydium/{structs.js → structs/amms.js} +3 -43
- package/src/plugins/raydium/structs/amms.js.map +1 -0
- package/src/plugins/raydium/structs/clmms.d.ts +80 -0
- package/src/plugins/raydium/structs/clmms.js +79 -0
- package/src/plugins/raydium/structs/clmms.js.map +1 -0
- package/src/plugins/raydium/structs/openOrders.d.ts +47 -0
- package/src/plugins/raydium/structs/openOrders.js +47 -0
- package/src/plugins/raydium/structs/openOrders.js.map +1 -0
- package/src/plugins/raydium/structs.js.map +0 -1
@@ -0,0 +1,103 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
13
|
+
const js_1 = require("@metaplex-foundation/js");
|
14
|
+
const constants_1 = require("./constants");
|
15
|
+
const filters_1 = require("./filters");
|
16
|
+
const clients_1 = require("../../utils/clients");
|
17
|
+
const aquafarms_1 = require("./structs/aquafarms");
|
18
|
+
const solana_1 = require("../../utils/solana");
|
19
|
+
const fetchTokenSupplyAndDecimals_1 = require("../../utils/solana/fetchTokenSupplyAndDecimals");
|
20
|
+
// import { getYields } from './helpers';
|
21
|
+
const getMultipleAccountsInfoSafe_1 = require("../../utils/solana/getMultipleAccountsInfoSafe");
|
22
|
+
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
23
|
+
const client = (0, clients_1.getClientSolana)();
|
24
|
+
const aquafarmsRes = yield client.getProgramAccounts(constants_1.aquafarmsProgram, {
|
25
|
+
filters: filters_1.aquafarmFilters,
|
26
|
+
});
|
27
|
+
const aquafarms = aquafarmsRes.map((i) => (Object.assign(Object.assign({}, aquafarms_1.aquafarmStruct.deserialize(i.account.data)[0]), { pubkey: i.pubkey })));
|
28
|
+
const tokenAccountsToFetch = [
|
29
|
+
...aquafarms.map((a) => a.baseTokenVault),
|
30
|
+
...aquafarms.map((a) => a.rewardTokenVault),
|
31
|
+
];
|
32
|
+
const tokenAccountsRes = yield (0, getMultipleAccountsInfoSafe_1.getMultipleAccountsInfoSafe)(client, tokenAccountsToFetch);
|
33
|
+
if (!tokenAccountsRes)
|
34
|
+
return;
|
35
|
+
const tokenAccountsMap = new Map();
|
36
|
+
tokenAccountsRes.forEach((tokenAccountRes, i) => {
|
37
|
+
if (!tokenAccountRes)
|
38
|
+
return;
|
39
|
+
const tokenAccount = solana_1.tokenAccountStruct.deserialize(tokenAccountRes.data)[0];
|
40
|
+
tokenAccountsMap.set(tokenAccountsToFetch[i].toString(), tokenAccount);
|
41
|
+
});
|
42
|
+
for (let i = 0; i < aquafarms.length; i += 1) {
|
43
|
+
const aquafarm = aquafarms[i];
|
44
|
+
const baseMint = aquafarm.baseTokenMint.toString();
|
45
|
+
const baseToken = yield cache.getTokenPrice(baseMint, portfolio_core_1.NetworkId.solana);
|
46
|
+
if (!baseToken)
|
47
|
+
continue;
|
48
|
+
const baseVault = tokenAccountsMap.get(aquafarm.baseTokenVault.toString());
|
49
|
+
if (!baseVault)
|
50
|
+
continue;
|
51
|
+
if (baseVault.amount.isZero())
|
52
|
+
continue;
|
53
|
+
const farmMint = aquafarm.farmTokenMint.toString();
|
54
|
+
const tokenSupplyRes = yield (0, fetchTokenSupplyAndDecimals_1.fetchTokenSupplyAndDecimals)(new js_1.PublicKey(farmMint), client, 0);
|
55
|
+
if (!tokenSupplyRes)
|
56
|
+
continue;
|
57
|
+
const { decimals: farmDecimals, supply: farmSupply } = tokenSupplyRes;
|
58
|
+
const baseVaultAmount = baseVault.amount
|
59
|
+
.div(Math.pow(10, baseToken.decimals))
|
60
|
+
.toNumber();
|
61
|
+
const baseVaultValue = baseVaultAmount * baseToken.price;
|
62
|
+
const price = baseVaultValue / farmSupply;
|
63
|
+
// Yields
|
64
|
+
// const rewardToken = null;
|
65
|
+
// const rewardVault = tokenAccountsMap.get(
|
66
|
+
// aquafarm.rewardTokenVault.toString()
|
67
|
+
// );
|
68
|
+
// if (rewardVault) rewardToken = tokenAccountsMap.get(rewardVault.mint.toString());
|
69
|
+
// if (rewardVault)
|
70
|
+
// rewardToken = await cache.getTokenPrice(
|
71
|
+
// rewardVault.mint.toString(),
|
72
|
+
// NetworkId.solana
|
73
|
+
// );
|
74
|
+
// let yields;
|
75
|
+
// if (rewardToken) yields = getYields(aquafarm, rewardToken, baseVaultValue);
|
76
|
+
// console.log('constexecutor:JobExecutor= ~ yields:', yields);
|
77
|
+
yield cache.setTokenPriceSource({
|
78
|
+
id: constants_1.platformId,
|
79
|
+
weight: 1,
|
80
|
+
address: farmMint.toString(),
|
81
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
82
|
+
platformId: constants_1.platformId,
|
83
|
+
decimals: farmDecimals,
|
84
|
+
price,
|
85
|
+
underlyings: [
|
86
|
+
{
|
87
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
88
|
+
address: baseToken.address,
|
89
|
+
decimals: baseToken.decimals,
|
90
|
+
price: baseToken.price,
|
91
|
+
amountPerLp: baseVaultAmount / baseVaultValue,
|
92
|
+
},
|
93
|
+
],
|
94
|
+
timestamp: Date.now(),
|
95
|
+
});
|
96
|
+
}
|
97
|
+
});
|
98
|
+
const job = {
|
99
|
+
id: `${constants_1.platformId}-lp-tokens`,
|
100
|
+
executor,
|
101
|
+
};
|
102
|
+
exports.default = job;
|
103
|
+
//# sourceMappingURL=lpTokensJob.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"lpTokensJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/orca/lpTokensJob.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { BeetStruct } from '@metaplex-foundation/beet';
|
3
|
+
import { PublicKey } from '@metaplex-foundation/js';
|
4
|
+
import BigNumber from 'bignumber.js';
|
5
|
+
export type AMMV4Info = {
|
6
|
+
isInitialized: number;
|
7
|
+
accountType: number;
|
8
|
+
globalFarm: PublicKey;
|
9
|
+
owner: PublicKey;
|
10
|
+
baseTokensConverted: BigNumber;
|
11
|
+
cumulativeEmissionsCheckpoint: BigNumber;
|
12
|
+
};
|
13
|
+
export declare const ammV4InfoStruct: BeetStruct<AMMV4Info, Partial<AMMV4Info>>;
|
14
|
+
export type UserAquafarm = {
|
15
|
+
isInitialized: number;
|
16
|
+
accountType: number;
|
17
|
+
globalFarm: PublicKey;
|
18
|
+
owner: PublicKey;
|
19
|
+
baseTokensConverted: BigNumber;
|
20
|
+
cumulativeEmissionsCheckpoint: BigNumber;
|
21
|
+
};
|
22
|
+
export declare const userAquafarmStruct: BeetStruct<UserAquafarm, Partial<UserAquafarm>>;
|
23
|
+
export type Aquafarm = {
|
24
|
+
buffer: Buffer;
|
25
|
+
tokenProgramId: PublicKey;
|
26
|
+
emissionsAuthority: PublicKey;
|
27
|
+
removeRewardsAuthority: PublicKey;
|
28
|
+
baseTokenMint: PublicKey;
|
29
|
+
baseTokenVault: PublicKey;
|
30
|
+
rewardTokenVault: PublicKey;
|
31
|
+
farmTokenMint: PublicKey;
|
32
|
+
emissionsPerSecondNumerator: BigNumber;
|
33
|
+
emissionsPerSecondDenominator: BigNumber;
|
34
|
+
lastUpdatedTimestamp: BigNumber;
|
35
|
+
cumulativeEmissionsPerFarmToken: BigNumber;
|
36
|
+
};
|
37
|
+
export declare const aquafarmStruct: BeetStruct<Aquafarm, Partial<Aquafarm>>;
|
@@ -0,0 +1,37 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.aquafarmStruct = exports.userAquafarmStruct = exports.ammV4InfoStruct = void 0;
|
4
|
+
const beet_1 = require("@metaplex-foundation/beet");
|
5
|
+
const beet_solana_1 = require("@metaplex-foundation/beet-solana");
|
6
|
+
const solana_1 = require("../../../utils/solana");
|
7
|
+
exports.ammV4InfoStruct = new beet_1.BeetStruct([
|
8
|
+
['isInitialized', beet_1.u8],
|
9
|
+
['accountType', beet_1.u8],
|
10
|
+
['globalFarm', beet_solana_1.publicKey],
|
11
|
+
['owner', beet_solana_1.publicKey],
|
12
|
+
['baseTokensConverted', solana_1.u64],
|
13
|
+
['cumulativeEmissionsCheckpoint', solana_1.u256],
|
14
|
+
], (args) => args);
|
15
|
+
exports.userAquafarmStruct = new beet_1.BeetStruct([
|
16
|
+
['isInitialized', beet_1.u8],
|
17
|
+
['accountType', beet_1.u8],
|
18
|
+
['globalFarm', beet_solana_1.publicKey],
|
19
|
+
['owner', beet_solana_1.publicKey],
|
20
|
+
['baseTokensConverted', solana_1.u64],
|
21
|
+
['cumulativeEmissionsCheckpoint', solana_1.u256],
|
22
|
+
], (args) => args);
|
23
|
+
exports.aquafarmStruct = new beet_1.BeetStruct([
|
24
|
+
['buffer', (0, solana_1.blob)(3)],
|
25
|
+
['tokenProgramId', beet_solana_1.publicKey],
|
26
|
+
['emissionsAuthority', beet_solana_1.publicKey],
|
27
|
+
['removeRewardsAuthority', beet_solana_1.publicKey],
|
28
|
+
['baseTokenMint', beet_solana_1.publicKey],
|
29
|
+
['baseTokenVault', beet_solana_1.publicKey],
|
30
|
+
['rewardTokenVault', beet_solana_1.publicKey],
|
31
|
+
['farmTokenMint', beet_solana_1.publicKey],
|
32
|
+
['emissionsPerSecondNumerator', solana_1.u64],
|
33
|
+
['emissionsPerSecondDenominator', solana_1.u64],
|
34
|
+
['lastUpdatedTimestamp', solana_1.u64],
|
35
|
+
['cumulativeEmissionsPerFarmToken', solana_1.u256],
|
36
|
+
], (args) => args);
|
37
|
+
//# sourceMappingURL=aquafarms.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"aquafarms.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/orca/structs/aquafarms.ts"],"names":[],"mappings":";;;AAAA,oDAA2D;AAC3D,kEAA6D;AAG7D,kDAAwD;AAW3C,QAAA,eAAe,GAAG,IAAI,iBAAU,CAC3C;IACE,CAAC,eAAe,EAAE,SAAE,CAAC;IACrB,CAAC,aAAa,EAAE,SAAE,CAAC;IACnB,CAAC,YAAY,EAAE,uBAAS,CAAC;IACzB,CAAC,OAAO,EAAE,uBAAS,CAAC;IACpB,CAAC,qBAAqB,EAAE,YAAG,CAAC;IAC5B,CAAC,+BAA+B,EAAE,aAAI,CAAC;CACxC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAiB,CAC5B,CAAC;AAWW,QAAA,kBAAkB,GAAG,IAAI,iBAAU,CAC9C;IACE,CAAC,eAAe,EAAE,SAAE,CAAC;IACrB,CAAC,aAAa,EAAE,SAAE,CAAC;IACnB,CAAC,YAAY,EAAE,uBAAS,CAAC;IACzB,CAAC,OAAO,EAAE,uBAAS,CAAC;IACpB,CAAC,qBAAqB,EAAE,YAAG,CAAC;IAC5B,CAAC,+BAA+B,EAAE,aAAI,CAAC;CACxC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAoB,CAC/B,CAAC;AAiBW,QAAA,cAAc,GAAG,IAAI,iBAAU,CAC1C;IACE,CAAC,QAAQ,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,CAAC;IACnB,CAAC,gBAAgB,EAAE,uBAAS,CAAC;IAC7B,CAAC,oBAAoB,EAAE,uBAAS,CAAC;IACjC,CAAC,wBAAwB,EAAE,uBAAS,CAAC;IACrC,CAAC,eAAe,EAAE,uBAAS,CAAC;IAC5B,CAAC,gBAAgB,EAAE,uBAAS,CAAC;IAC7B,CAAC,kBAAkB,EAAE,uBAAS,CAAC;IAC/B,CAAC,eAAe,EAAE,uBAAS,CAAC;IAC5B,CAAC,6BAA6B,EAAE,YAAG,CAAC;IACpC,CAAC,+BAA+B,EAAE,YAAG,CAAC;IACtC,CAAC,sBAAsB,EAAE,YAAG,CAAC;IAC7B,CAAC,iCAAiC,EAAE,aAAI,CAAC;CAC1C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAgB,CAC3B,CAAC"}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { BeetStruct } from '@metaplex-foundation/beet';
|
3
|
+
import { PublicKey } from '@metaplex-foundation/js';
|
4
|
+
import BigNumber from 'bignumber.js';
|
5
|
+
export type PositionRewardInfo = {
|
6
|
+
growthInsideCheckpoint: BigNumber;
|
7
|
+
amountOwed: BigNumber;
|
8
|
+
};
|
9
|
+
export declare const positionRewardInfoStruct: BeetStruct<PositionRewardInfo, Partial<PositionRewardInfo>>;
|
10
|
+
export type PositionWhirlpool = Position & {
|
11
|
+
tickCurrentIndex?: number;
|
12
|
+
tokenMintA?: PublicKey;
|
13
|
+
tokenMintB?: PublicKey;
|
14
|
+
};
|
15
|
+
export type Position = {
|
16
|
+
padding: Buffer;
|
17
|
+
whirlpool: PublicKey;
|
18
|
+
positionMint: PublicKey;
|
19
|
+
liquidity: BigNumber;
|
20
|
+
tickLowerIndex: number;
|
21
|
+
tickUpperIndex: number;
|
22
|
+
feeGrowthCheckpointA: BigNumber;
|
23
|
+
feeOwedA: BigNumber;
|
24
|
+
feeGrowthCheckpointB: BigNumber;
|
25
|
+
feeOwedB: BigNumber;
|
26
|
+
rewardInfos: PositionRewardInfo[];
|
27
|
+
};
|
28
|
+
export declare const positionStruct: BeetStruct<Position, Partial<Position>>;
|
29
|
+
export type WhirlpoolRewardInfo = {
|
30
|
+
mint: PublicKey;
|
31
|
+
vault: PublicKey;
|
32
|
+
authority: PublicKey;
|
33
|
+
emissionsPerSecondX64: BigNumber;
|
34
|
+
growthGlobalX64: BigNumber;
|
35
|
+
};
|
36
|
+
export declare const whirlpoolRewardInfoStruct: BeetStruct<WhirlpoolRewardInfo, Partial<WhirlpoolRewardInfo>>;
|
37
|
+
export type Whirlpool = {
|
38
|
+
padding: Buffer;
|
39
|
+
whirlpoolsConfig: PublicKey;
|
40
|
+
whirlpoolBump: number[];
|
41
|
+
tickSpacing: number;
|
42
|
+
tickSpacingSeed: number[];
|
43
|
+
feeRate: number;
|
44
|
+
protocolFeeRate: number;
|
45
|
+
liquidity: BigNumber;
|
46
|
+
sqrtPrice: BigNumber;
|
47
|
+
tickCurrentIndex: number;
|
48
|
+
protocolFeeOwedA: BigNumber;
|
49
|
+
protocolFeeOwedB: BigNumber;
|
50
|
+
tokenMintA: PublicKey;
|
51
|
+
tokenVaultA: PublicKey;
|
52
|
+
feeGrowthGlobalA: BigNumber;
|
53
|
+
tokenMintB: PublicKey;
|
54
|
+
tokenVaultB: PublicKey;
|
55
|
+
feeGrowthGlobalB: BigNumber;
|
56
|
+
rewardLastUpdatedTimestamp: BigNumber;
|
57
|
+
rewardInfos: WhirlpoolRewardInfo[];
|
58
|
+
};
|
59
|
+
export declare const whirlpoolStruct: BeetStruct<Whirlpool, Partial<Whirlpool>>;
|
@@ -0,0 +1,53 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.whirlpoolStruct = exports.whirlpoolRewardInfoStruct = exports.positionStruct = exports.positionRewardInfoStruct = void 0;
|
4
|
+
const beet_1 = require("@metaplex-foundation/beet");
|
5
|
+
const beet_solana_1 = require("@metaplex-foundation/beet-solana");
|
6
|
+
const solana_1 = require("../../../utils/solana");
|
7
|
+
exports.positionRewardInfoStruct = new beet_1.BeetStruct([
|
8
|
+
['growthInsideCheckpoint', solana_1.u128],
|
9
|
+
['amountOwed', solana_1.u64],
|
10
|
+
], (args) => args);
|
11
|
+
exports.positionStruct = new beet_1.BeetStruct([
|
12
|
+
['padding', (0, solana_1.blob)(8)],
|
13
|
+
['whirlpool', beet_solana_1.publicKey],
|
14
|
+
['positionMint', beet_solana_1.publicKey],
|
15
|
+
['liquidity', solana_1.u128],
|
16
|
+
['tickLowerIndex', beet_1.i32],
|
17
|
+
['tickUpperIndex', beet_1.i32],
|
18
|
+
['feeGrowthCheckpointA', solana_1.u128],
|
19
|
+
['feeOwedA', solana_1.u64],
|
20
|
+
['feeGrowthCheckpointB', solana_1.u128],
|
21
|
+
['feeOwedB', solana_1.u64],
|
22
|
+
['rewardInfos', (0, beet_1.uniformFixedSizeArray)(exports.positionRewardInfoStruct, 3)],
|
23
|
+
], (args) => args);
|
24
|
+
exports.whirlpoolRewardInfoStruct = new beet_1.BeetStruct([
|
25
|
+
['mint', beet_solana_1.publicKey],
|
26
|
+
['vault', beet_solana_1.publicKey],
|
27
|
+
['authority', beet_solana_1.publicKey],
|
28
|
+
['emissionsPerSecondX64', solana_1.u128],
|
29
|
+
['growthGlobalX64', solana_1.u128],
|
30
|
+
], (args) => args);
|
31
|
+
exports.whirlpoolStruct = new beet_1.BeetStruct([
|
32
|
+
['padding', (0, solana_1.blob)(8)],
|
33
|
+
['whirlpoolsConfig', beet_solana_1.publicKey],
|
34
|
+
['whirlpoolBump', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 1)],
|
35
|
+
['tickSpacing', beet_1.u16],
|
36
|
+
['tickSpacingSeed', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 2)],
|
37
|
+
['feeRate', beet_1.u16],
|
38
|
+
['protocolFeeRate', beet_1.u16],
|
39
|
+
['liquidity', solana_1.u128],
|
40
|
+
['sqrtPrice', solana_1.u128],
|
41
|
+
['tickCurrentIndex', beet_1.i32],
|
42
|
+
['protocolFeeOwedA', solana_1.u64],
|
43
|
+
['protocolFeeOwedB', solana_1.u64],
|
44
|
+
['tokenMintA', beet_solana_1.publicKey],
|
45
|
+
['tokenVaultA', beet_solana_1.publicKey],
|
46
|
+
['feeGrowthGlobalA', solana_1.u128],
|
47
|
+
['tokenMintB', beet_solana_1.publicKey],
|
48
|
+
['tokenVaultB', beet_solana_1.publicKey],
|
49
|
+
['feeGrowthGlobalB', solana_1.u128],
|
50
|
+
['rewardLastUpdatedTimestamp', solana_1.u64],
|
51
|
+
['rewardInfos', (0, beet_1.uniformFixedSizeArray)(exports.whirlpoolRewardInfoStruct, 3)],
|
52
|
+
], (args) => args);
|
53
|
+
//# sourceMappingURL=whirlpool.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"whirlpool.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/orca/structs/whirlpool.ts"],"names":[],"mappings":";;;AAAA,oDAMmC;AACnC,kEAA6D;AAG7D,kDAAwD;AAO3C,QAAA,wBAAwB,GAAG,IAAI,iBAAU,CACpD;IACE,CAAC,wBAAwB,EAAE,aAAI,CAAC;IAChC,CAAC,YAAY,EAAE,YAAG,CAAC;CACpB,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAA0B,CACrC,CAAC;AAsBW,QAAA,cAAc,GAAG,IAAI,iBAAU,CAC1C;IACE,CAAC,SAAS,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,CAAC;IACpB,CAAC,WAAW,EAAE,uBAAS,CAAC;IACxB,CAAC,cAAc,EAAE,uBAAS,CAAC;IAC3B,CAAC,WAAW,EAAE,aAAI,CAAC;IACnB,CAAC,gBAAgB,EAAE,UAAG,CAAC;IACvB,CAAC,gBAAgB,EAAE,UAAG,CAAC;IACvB,CAAC,sBAAsB,EAAE,aAAI,CAAC;IAC9B,CAAC,UAAU,EAAE,YAAG,CAAC;IACjB,CAAC,sBAAsB,EAAE,aAAI,CAAC;IAC9B,CAAC,UAAU,EAAE,YAAG,CAAC;IACjB,CAAC,aAAa,EAAE,IAAA,4BAAqB,EAAC,gCAAwB,EAAE,CAAC,CAAC,CAAC;CACpE,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAgB,CAC3B,CAAC;AAUW,QAAA,yBAAyB,GAAG,IAAI,iBAAU,CACrD;IACE,CAAC,MAAM,EAAE,uBAAS,CAAC;IACnB,CAAC,OAAO,EAAE,uBAAS,CAAC;IACpB,CAAC,WAAW,EAAE,uBAAS,CAAC;IACxB,CAAC,uBAAuB,EAAE,aAAI,CAAC;IAC/B,CAAC,iBAAiB,EAAE,aAAI,CAAC;CAC1B,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAA2B,CACtC,CAAC;AAyBW,QAAA,eAAe,GAAG,IAAI,iBAAU,CAC3C;IACE,CAAC,SAAS,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,CAAC;IACpB,CAAC,kBAAkB,EAAE,uBAAS,CAAC;IAC/B,CAAC,eAAe,EAAE,IAAA,4BAAqB,EAAC,SAAE,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC,aAAa,EAAE,UAAG,CAAC;IACpB,CAAC,iBAAiB,EAAE,IAAA,4BAAqB,EAAC,SAAE,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC,SAAS,EAAE,UAAG,CAAC;IAChB,CAAC,iBAAiB,EAAE,UAAG,CAAC;IACxB,CAAC,WAAW,EAAE,aAAI,CAAC;IACnB,CAAC,WAAW,EAAE,aAAI,CAAC;IACnB,CAAC,kBAAkB,EAAE,UAAG,CAAC;IACzB,CAAC,kBAAkB,EAAE,YAAG,CAAC;IACzB,CAAC,kBAAkB,EAAE,YAAG,CAAC;IACzB,CAAC,YAAY,EAAE,uBAAS,CAAC;IACzB,CAAC,aAAa,EAAE,uBAAS,CAAC;IAC1B,CAAC,kBAAkB,EAAE,aAAI,CAAC;IAC1B,CAAC,YAAY,EAAE,uBAAS,CAAC;IACzB,CAAC,aAAa,EAAE,uBAAS,CAAC;IAC1B,CAAC,kBAAkB,EAAE,aAAI,CAAC;IAC1B,CAAC,4BAA4B,EAAE,YAAG,CAAC;IACnC,CAAC,aAAa,EAAE,IAAA,4BAAqB,EAAC,iCAAyB,EAAE,CAAC,CAAC,CAAC;CACrE,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAiB,CAC5B,CAAC"}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
13
|
+
const constants_1 = require("./constants");
|
14
|
+
const solana_1 = require("../../utils/solana");
|
15
|
+
const clients_1 = require("../../utils/clients");
|
16
|
+
const whirlpool_1 = require("./structs/whirlpool");
|
17
|
+
const filters_1 = require("./filters");
|
18
|
+
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
19
|
+
const client = (0, clients_1.getClientSolana)();
|
20
|
+
const whirlpoolsInfo = yield (0, solana_1.getParsedProgramAccounts)(client, whirlpool_1.whirlpoolStruct, constants_1.whirlpoolProgram, filters_1.whirlpoolFilters);
|
21
|
+
for (let id = 0; id < whirlpoolsInfo.length; id++) {
|
22
|
+
const whirlpoolInfo = whirlpoolsInfo[id];
|
23
|
+
if (whirlpoolInfo.liquidity.isZero())
|
24
|
+
continue;
|
25
|
+
yield cache.setItem(whirlpoolInfo.pubkey.toString(), whirlpoolInfo, {
|
26
|
+
prefix: constants_1.whirlpoolPrefix,
|
27
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
28
|
+
});
|
29
|
+
}
|
30
|
+
});
|
31
|
+
const job = {
|
32
|
+
id: `${constants_1.platformId}-whirlpools`,
|
33
|
+
executor,
|
34
|
+
};
|
35
|
+
exports.default = job;
|
36
|
+
//# sourceMappingURL=whirlpoolsJob.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"whirlpoolsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/orca/whirlpoolsJob.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAgF;AAChF,2CAA4E;AAC5E,+CAA8D;AAC9D,iDAAsD;AACtD,mDAAsD;AACtD,uCAA6C;AAE7C,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,IAAA,yBAAe,GAAE,CAAC;IAEjC,MAAM,cAAc,GAAG,MAAM,IAAA,iCAAwB,EACnD,MAAM,EACN,2BAAe,EACf,4BAAgB,EAChB,0BAAgB,CACjB,CAAC;IACF,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;QACjD,MAAM,aAAa,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE;YAAE,SAAS;QAC/C,MAAM,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE;YAClE,MAAM,EAAE,2BAAe;YACvB,SAAS,EAAE,0BAAS,CAAC,MAAM;SAC5B,CAAC,CAAC;KACJ;AACH,CAAC,CAAA,CAAC;AAEF,MAAM,GAAG,GAAQ;IACf,EAAE,EAAE,GAAG,sBAAU,aAAa;IAC9B,QAAQ;CACT,CAAC;AACF,kBAAe,GAAG,CAAC"}
|
@@ -0,0 +1,110 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
16
|
+
const js_1 = require("@metaplex-foundation/js");
|
17
|
+
const constants_1 = require("./constants");
|
18
|
+
const tokenPriceToAssetToken_1 = __importDefault(require("../../utils/misc/tokenPriceToAssetToken"));
|
19
|
+
const helpers_1 = require("./helpers");
|
20
|
+
const solana_1 = require("../../utils/solana");
|
21
|
+
const clients_1 = require("../../utils/clients");
|
22
|
+
const clmms_1 = require("./structs/clmms");
|
23
|
+
const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
|
24
|
+
const client = (0, clients_1.getClientSolana)();
|
25
|
+
const metaplex = new js_1.Metaplex(client);
|
26
|
+
const nfts = yield metaplex.nfts().findAllByOwner({
|
27
|
+
owner: new js_1.PublicKey(owner),
|
28
|
+
});
|
29
|
+
const positionsProgramAddress = [];
|
30
|
+
nfts.forEach((nft) => {
|
31
|
+
if (nft && nft.name === constants_1.clmmNFTName) {
|
32
|
+
const address = nft.model === 'metadata'
|
33
|
+
? new js_1.PublicKey(nft.mintAddress.toString())
|
34
|
+
: new js_1.PublicKey(nft.mint.address.toString());
|
35
|
+
const positionSeed = [Buffer.from('position'), address.toBuffer()];
|
36
|
+
const [programAddress] = js_1.PublicKey.findProgramAddressSync(positionSeed, constants_1.raydiumProgram);
|
37
|
+
positionsProgramAddress.push(programAddress);
|
38
|
+
}
|
39
|
+
});
|
40
|
+
if (positionsProgramAddress.length === 0)
|
41
|
+
return [];
|
42
|
+
const personalPositionsInfo = yield (0, solana_1.getParsedMultipleAccountsInfo)(client, clmms_1.personalPositionStateStruct, positionsProgramAddress);
|
43
|
+
if (!personalPositionsInfo || personalPositionsInfo.length === 0)
|
44
|
+
return [];
|
45
|
+
const poolsStateInfo = yield (0, solana_1.getParsedMultipleAccountsInfo)(client, clmms_1.poolStateStruct, personalPositionsInfo.flatMap((position) => position ? position.poolId : []));
|
46
|
+
if (!poolsStateInfo)
|
47
|
+
return [];
|
48
|
+
if (poolsStateInfo.length !== personalPositionsInfo.length)
|
49
|
+
return [];
|
50
|
+
const assets = [];
|
51
|
+
let totalLiquidityValue = 0;
|
52
|
+
for (let index = 0; index < personalPositionsInfo.length; index++) {
|
53
|
+
const poolStateInfo = poolsStateInfo[index];
|
54
|
+
if (!poolStateInfo)
|
55
|
+
continue;
|
56
|
+
const personalPositionInfo = personalPositionsInfo[index];
|
57
|
+
if (!personalPositionInfo)
|
58
|
+
continue;
|
59
|
+
if (!poolStateInfo.tokenMint0 ||
|
60
|
+
!poolStateInfo.tokenMint1 ||
|
61
|
+
!poolStateInfo.tickCurrent)
|
62
|
+
continue;
|
63
|
+
const { tokenAmountA, tokenAmountB } = (0, helpers_1.getAmountsFromLiquidity)(personalPositionInfo.liquidity, (0, helpers_1.tickIndexToSqrtPriceX64)(poolStateInfo.tickCurrent), (0, helpers_1.tickIndexToSqrtPriceX64)(personalPositionInfo.tickLowerIndex), (0, helpers_1.tickIndexToSqrtPriceX64)(personalPositionInfo.tickUpperIndex), true);
|
64
|
+
if (!tokenAmountA || !tokenAmountB)
|
65
|
+
continue;
|
66
|
+
const tokenPriceA = yield cache.getTokenPrice(poolStateInfo.tokenMint0.toString(), portfolio_core_1.NetworkId.solana);
|
67
|
+
if (!tokenPriceA)
|
68
|
+
continue;
|
69
|
+
const assetTokenA = (0, tokenPriceToAssetToken_1.default)(poolStateInfo.tokenMint0.toString(), tokenAmountA.toNumber() / Math.pow(10, tokenPriceA.decimals), portfolio_core_1.NetworkId.solana, tokenPriceA);
|
70
|
+
const tokenPriceB = yield cache.getTokenPrice(poolStateInfo.tokenMint1.toString(), portfolio_core_1.NetworkId.solana);
|
71
|
+
if (!tokenPriceB)
|
72
|
+
continue;
|
73
|
+
const assetTokenB = (0, tokenPriceToAssetToken_1.default)(poolStateInfo.tokenMint1.toString(), tokenAmountB.toNumber() / Math.pow(10, tokenPriceB.decimals), portfolio_core_1.NetworkId.solana, tokenPriceB);
|
74
|
+
if (!assetTokenB ||
|
75
|
+
!assetTokenA ||
|
76
|
+
assetTokenB.value === null ||
|
77
|
+
assetTokenA.value === null)
|
78
|
+
continue;
|
79
|
+
const value = assetTokenB.value + assetTokenA.value;
|
80
|
+
assets.push({
|
81
|
+
assets: [assetTokenA, assetTokenB],
|
82
|
+
assetsValue: value,
|
83
|
+
rewardAssets: [],
|
84
|
+
rewardAssetsValue: 0,
|
85
|
+
value,
|
86
|
+
yields: [],
|
87
|
+
});
|
88
|
+
totalLiquidityValue += value;
|
89
|
+
}
|
90
|
+
const elements = [];
|
91
|
+
elements.push({
|
92
|
+
type: portfolio_core_1.PortfolioElementType.liquidity,
|
93
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
94
|
+
platformId: 'raydium',
|
95
|
+
label: 'LiquidityPool',
|
96
|
+
tags: ['Concentrated'],
|
97
|
+
value: totalLiquidityValue,
|
98
|
+
data: {
|
99
|
+
liquidities: assets,
|
100
|
+
},
|
101
|
+
});
|
102
|
+
return elements;
|
103
|
+
});
|
104
|
+
const fetcher = {
|
105
|
+
id: `${constants_1.platformId}-clmm-positions`,
|
106
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
107
|
+
executor,
|
108
|
+
};
|
109
|
+
exports.default = fetcher;
|
110
|
+
//# sourceMappingURL=clmmPositionsFetcher.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"clmmPositionsFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/raydium/clmmPositionsFetcher.ts"],"names":[],"mappings":"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"}
|
@@ -2,3 +2,5 @@ import { PublicKey } from '@solana/web3.js';
|
|
2
2
|
export declare const platformId = "raydium";
|
3
3
|
export declare const AMM_PROGRAM_ID_V4: PublicKey;
|
4
4
|
export declare const AMM_PROGRAM_ID_V5: PublicKey;
|
5
|
+
export declare const raydiumProgram: PublicKey;
|
6
|
+
export declare const clmmNFTName = "Raydium Concentrated Liquidity";
|
@@ -1,8 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.AMM_PROGRAM_ID_V5 = exports.AMM_PROGRAM_ID_V4 = exports.platformId = void 0;
|
3
|
+
exports.clmmNFTName = exports.raydiumProgram = exports.AMM_PROGRAM_ID_V5 = exports.AMM_PROGRAM_ID_V4 = exports.platformId = void 0;
|
4
4
|
const web3_js_1 = require("@solana/web3.js");
|
5
5
|
exports.platformId = 'raydium';
|
6
6
|
exports.AMM_PROGRAM_ID_V4 = new web3_js_1.PublicKey('675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8');
|
7
7
|
exports.AMM_PROGRAM_ID_V5 = new web3_js_1.PublicKey('5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h');
|
8
|
+
exports.raydiumProgram = new web3_js_1.PublicKey('CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK');
|
9
|
+
exports.clmmNFTName = 'Raydium Concentrated Liquidity';
|
8
10
|
//# sourceMappingURL=constants.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/raydium/constants.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE/B,QAAA,UAAU,GAAG,SAAS,CAAC;AAEvB,QAAA,iBAAiB,GAAG,IAAI,mBAAS,CAC5C,8CAA8C,CAC/C,CAAC;AAEW,QAAA,iBAAiB,GAAG,IAAI,mBAAS,CAC5C,8CAA8C,CAC/C,CAAC"}
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/raydium/constants.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE/B,QAAA,UAAU,GAAG,SAAS,CAAC;AAEvB,QAAA,iBAAiB,GAAG,IAAI,mBAAS,CAC5C,8CAA8C,CAC/C,CAAC;AAEW,QAAA,iBAAiB,GAAG,IAAI,mBAAS,CAC5C,8CAA8C,CAC/C,CAAC;AAEW,QAAA,cAAc,GAAG,IAAI,mBAAS,CACzC,8CAA8C,CAC/C,CAAC;AAEW,QAAA,WAAW,GAAG,gCAAgC,CAAC"}
|
@@ -1,11 +1,11 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.ammV5Filter = exports.ammV4Filter = void 0;
|
4
|
-
const
|
4
|
+
const amms_1 = require("./structs/amms");
|
5
5
|
exports.ammV4Filter = [
|
6
|
-
{ dataSize:
|
6
|
+
{ dataSize: amms_1.ammInfoV4Struct.byteSize },
|
7
7
|
];
|
8
8
|
exports.ammV5Filter = [
|
9
|
-
{ dataSize:
|
9
|
+
{ dataSize: amms_1.ammInfoV5Struct.byteSize },
|
10
10
|
];
|
11
11
|
//# sourceMappingURL=filters.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/raydium/filters.ts"],"names":[],"mappings":";;;AACA,
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/raydium/filters.ts"],"names":[],"mappings":";;;AACA,yCAAkE;AAErD,QAAA,WAAW,GAA+B;IACrD,EAAE,QAAQ,EAAE,sBAAe,CAAC,QAAQ,EAAE;CACvC,CAAC;AAEW,QAAA,WAAW,GAA+B;IACrD,EAAE,QAAQ,EAAE,sBAAe,CAAC,QAAQ,EAAE;CACvC,CAAC"}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import BigNumber from 'bignumber.js';
|
2
|
+
import BN from 'bn.js';
|
3
|
+
import Decimal from 'decimal.js';
|
4
|
+
export declare enum Rounding {
|
5
|
+
ROUND_DOWN = 0,
|
6
|
+
ROUND_HALF_UP = 1,
|
7
|
+
ROUND_UP = 2
|
8
|
+
}
|
9
|
+
export declare const ZERO: BN;
|
10
|
+
export declare const ONE: BN;
|
11
|
+
export declare const TWO: BN;
|
12
|
+
export declare const THREE: BN;
|
13
|
+
export declare const FIVE: BN;
|
14
|
+
export declare const TEN: BN;
|
15
|
+
export declare const HUNDRED: BN;
|
16
|
+
export declare const THOUSAND: BN;
|
17
|
+
export declare const TENTHOUSAND: BN;
|
18
|
+
export declare const U64Resolution = 64;
|
19
|
+
export declare const Q64: BN;
|
20
|
+
export declare const Q128: BN;
|
21
|
+
export declare function signedShiftRight(n0: BN, shiftBy: number, bitWidth: number): BN;
|
22
|
+
export declare function tickIndexToSqrtPricePositive(tick: number): BigNumber;
|
23
|
+
export declare function tickIndexToSqrtPriceNegative(tickIndex: number): BigNumber;
|
24
|
+
export declare function tickIndexToSqrtPriceX64(tickIndex: number): BigNumber;
|
25
|
+
export declare function getAmountsFromLiquidity(liquidity: BigNumber, sqrtPriceCurrentX64: BigNumber, sqrtPriceX64A: BigNumber, sqrtPriceX64B: BigNumber, roundUp: boolean): {
|
26
|
+
tokenAmountA: BigNumber;
|
27
|
+
tokenAmountB: BigNumber;
|
28
|
+
};
|
29
|
+
export declare function getAmountsFromLiquidityWithSlippage(sqrtPriceCurrentX64: BigNumber, sqrtPriceX64A: BigNumber, sqrtPriceX64B: BigNumber, liquidity: BigNumber, amountMax: boolean, roundUp: boolean, amountSlippage: number): {
|
30
|
+
amountSlippageA: BigNumber;
|
31
|
+
amountSlippageB: BigNumber;
|
32
|
+
};
|
33
|
+
export declare function getTokenAmountAFromLiquidity(sqrtPriceX64A: BN, sqrtPriceX64B: BN, liquidity: BN, roundUp: boolean): BN;
|
34
|
+
export declare function getTokenAmountBFromLiquidity(sqrtPriceX64A: BN, sqrtPriceX64B: BN, liquidity: BN, roundUp: boolean): BN;
|
35
|
+
export declare function mulDivRoundingUp(a: BN, b: BN, denominator: BN): BN;
|
36
|
+
export declare function mulDivFloor(a: BN, b: BN, denominator: BN): BN;
|
37
|
+
export declare function mulDivCeil(a: BN, b: BN, denominator: BN): BN;
|
38
|
+
export declare function x64ToDecimal(num: BN, decimalPlaces?: number): Decimal;
|
39
|
+
export declare function decimalToX64(num: Decimal): BN;
|
40
|
+
export declare function wrappingSubU128(n0: BN, n1: BN): BN;
|