From 303c29cea63a0057dda226154dd0147c5580d6d1 Mon Sep 17 00:00:00 2001 From: legocactus <0xcactus@solend.fi> Date: Wed, 7 Dec 2022 17:02:29 -0500 Subject: [PATCH 1/2] use solend-sdk --- liquidator/package.json | 1 + liquidator/src/libs/refreshObligation.ts | 8 +- liquidator/src/libs/utils.ts | 45 ++++-- liquidator/src/liquidate.ts | 4 +- liquidator/src/models/layouts/lastUpdate.ts | 13 -- liquidator/src/models/layouts/obligation.ts | 171 -------------------- liquidator/src/models/layouts/reserve.ts | 163 ------------------- 7 files changed, 43 insertions(+), 362 deletions(-) delete mode 100644 liquidator/src/models/layouts/lastUpdate.ts delete mode 100644 liquidator/src/models/layouts/obligation.ts delete mode 100644 liquidator/src/models/layouts/reserve.ts diff --git a/liquidator/package.json b/liquidator/package.json index a459bc5e..24d32078 100644 --- a/liquidator/package.json +++ b/liquidator/package.json @@ -29,6 +29,7 @@ "@solana/spl-token": "^0.1.4", "@solana/spl-token-registry": "^0.2.114", "@solana/web3.js": "^1.53.0", + "@solendprotocol/solend-sdk": "=0.6.9", "@switchboard-xyz/sbv2-lite": "^0.1.0", "@switchboard-xyz/switchboard-api": "^0.2.160", "bignumber.js": "^9.0.1", diff --git a/liquidator/src/libs/refreshObligation.ts b/liquidator/src/libs/refreshObligation.ts index a2948def..664fec36 100644 --- a/liquidator/src/libs/refreshObligation.ts +++ b/liquidator/src/libs/refreshObligation.ts @@ -1,12 +1,12 @@ /* eslint-disable @typescript-eslint/no-throw-literal */ import BigNumber from 'bignumber.js'; import { findWhere, find } from 'underscore'; -import { Obligation, ObligationCollateral, ObligationLiquidity } from 'models/layouts/obligation'; -import { - getCollateralExchangeRate, getLiquidationThresholdRate, getLoanToValueRate, WAD, -} from 'models/layouts/reserve'; import { PublicKey } from '@solana/web3.js'; import BN from 'bn.js'; +import { Obligation, ObligationCollateral, ObligationLiquidity } from '@solendprotocol/solend-sdk'; +import { + getCollateralExchangeRate, getLiquidationThresholdRate, getLoanToValueRate, WAD, +} from './utils'; export const RISKY_OBLIGATION_THRESHOLD = 78; diff --git a/liquidator/src/libs/utils.ts b/liquidator/src/libs/utils.ts index 28d9808e..e2fcbb7b 100644 --- a/liquidator/src/libs/utils.ts +++ b/liquidator/src/libs/utils.ts @@ -2,19 +2,20 @@ /* eslint-disable no-restricted-syntax */ import { ASSOCIATED_TOKEN_PROGRAM_ID, Token, TOKEN_PROGRAM_ID } from '@solana/spl-token'; import { Connection, PublicKey } from '@solana/web3.js'; +import { + OBLIGATION_SIZE, parseObligation, parseReserve, Reserve, RESERVE_SIZE, +} from '@solendprotocol/solend-sdk'; import BigNumber from 'bignumber.js'; import { LiquidityToken, MarketConfig, TokenCount, } from 'global'; -import { - ObligationParser, OBLIGATION_LEN, -} from 'models/layouts/obligation'; -import { ReserveParser, RESERVE_LEN } from 'models/layouts/reserve'; import { findWhere } from 'underscore'; import { TokenOracleData } from './pyth'; export const WAD = new BigNumber(`1${''.padEnd(18, '0')}`); export const U64_MAX = '18446744073709551615'; +const INITIAL_COLLATERAL_RATIO = 1; +const INITIAL_COLLATERAL_RATE = new BigNumber(INITIAL_COLLATERAL_RATIO).multipliedBy(WAD); // Converts amount to human (rebase with decimals) export function toHuman(market: MarketConfig, amount: string, symbol: string) { @@ -143,12 +144,12 @@ export async function getObligations(connection: Connection, lendingMarketAddr) }, }, { - dataSize: OBLIGATION_LEN, + dataSize: OBLIGATION_SIZE, }], encoding: 'base64', }); - return resp.map((account) => ObligationParser(account.pubkey, account.account)); + return resp.map((account) => parseObligation(account.pubkey, account.account)); } export async function getReserves(connection: Connection, lendingMarketAddr) { @@ -163,13 +164,13 @@ export async function getReserves(connection: Connection, lendingMarketAddr) { }, }, { - dataSize: RESERVE_LEN, + dataSize: RESERVE_SIZE, }, ], encoding: 'base64', }); - return resp.map((account) => ReserveParser(account.pubkey, account.account)); + return resp.map((account) => parseReserve(account.pubkey, account.account)); } export async function getWalletBalances(connection, wallet, tokensOracle, market) { @@ -255,8 +256,34 @@ export function getWalletDistTarget() { const asset = tokens[0]; const unitAmount = tokens[1]; - target.push({ symbol: asset, target: parseFloat(unitAmount) }); + if (asset && unitAmount) { + target.push({ symbol: asset, target: parseFloat(unitAmount) }); + } } return target; } + +export const getCollateralExchangeRate = (reserve: Reserve): BigNumber => { + const totalLiquidity = (new BigNumber(reserve.liquidity.availableAmount.toString()).multipliedBy(WAD)) + .plus(new BigNumber(reserve.liquidity.borrowedAmountWads.toString())); + + const { collateral } = reserve; + let rate; + if (collateral.mintTotalSupply.isZero() || totalLiquidity.isZero()) { + rate = INITIAL_COLLATERAL_RATE; + } else { + const { mintTotalSupply } = collateral; + rate = (new BigNumber(mintTotalSupply.toString()).multipliedBy(WAD)) + .dividedBy(new BigNumber(totalLiquidity.toString())); + } + return rate; +}; + +export const getLoanToValueRate = (reserve: Reserve): BigNumber => new BigNumber( + reserve.config.loanToValueRatio / 100, +); + +export const getLiquidationThresholdRate = (reserve: Reserve): BigNumber => new BigNumber( + reserve.config.liquidationThreshold / 100, +); diff --git a/liquidator/src/liquidate.ts b/liquidator/src/liquidate.ts index 9343c2db..01e38df5 100644 --- a/liquidator/src/liquidate.ts +++ b/liquidator/src/liquidate.ts @@ -7,7 +7,6 @@ import { PublicKey, } from '@solana/web3.js'; import dotenv from 'dotenv'; -import { ObligationParser } from 'models/layouts/obligation'; import { getObligations, getReserves, getWalletBalances, getWalletDistTarget, getWalletTokenData, wait, } from 'libs/utils'; @@ -18,6 +17,7 @@ import { liquidateAndRedeem } from 'libs/actions/liquidateAndRedeem'; import { rebalanceWallet } from 'libs/rebalanceWallet'; import { Jupiter } from '@jup-ag/core'; import { unwrapTokens } from 'libs/unwrap/unwrapToken'; +import { parseObligation } from '@solendprotocol/solend-sdk'; import { getMarkets } from './config'; dotenv.config(); @@ -126,7 +126,7 @@ async function runLiquidator() { const postLiquidationObligation = await connection.getAccountInfo( new PublicKey(obligation.pubkey), ); - obligation = ObligationParser(obligation.pubkey, postLiquidationObligation!); + obligation = parseObligation(obligation.pubkey, postLiquidationObligation!); } } catch (err) { console.error(`error liquidating ${obligation!.pubkey.toString()}: `, err); diff --git a/liquidator/src/models/layouts/lastUpdate.ts b/liquidator/src/models/layouts/lastUpdate.ts deleted file mode 100644 index f071b696..00000000 --- a/liquidator/src/models/layouts/lastUpdate.ts +++ /dev/null @@ -1,13 +0,0 @@ -import BN from 'bn.js'; -import * as Layout from 'libs/layout'; -import * as BufferLayout from 'buffer-layout'; - -export const LastUpdateLayout: typeof BufferLayout.Structure = BufferLayout.struct( - [Layout.uint64('slot'), BufferLayout.u8('stale')], - 'lastUpdate', -); - -export interface LastUpdate { - slot: BN; - stale: boolean; -} diff --git a/liquidator/src/models/layouts/obligation.ts b/liquidator/src/models/layouts/obligation.ts deleted file mode 100644 index 1862ad7a..00000000 --- a/liquidator/src/models/layouts/obligation.ts +++ /dev/null @@ -1,171 +0,0 @@ -import { AccountInfo, PublicKey } from '@solana/web3.js'; -import BN from 'bn.js'; -import * as BufferLayout from 'buffer-layout'; -import * as Layout from 'libs/layout'; -import { LastUpdate, LastUpdateLayout } from './lastUpdate'; - -export const OBLIGATION_LEN = 1300; - -export interface Obligation { - version: number; - lastUpdate: LastUpdate; - lendingMarket: PublicKey; - owner: PublicKey; - // @FIXME: check usages - deposits: ObligationCollateral[]; - // @FIXME: check usages - borrows: ObligationLiquidity[]; - depositedValue: BN; // decimals - borrowedValue: BN; // decimals - allowedBorrowValue: BN; // decimals - unhealthyBorrowValue: BN; // decimals -} - -// BN defines toJSON property, which messes up serialization -// @ts-ignore -BN.prototype.toJSON = undefined; - -export function obligationToString(obligation: Obligation) { - return JSON.stringify( - obligation, - (key, value) => { - switch (value.constructor.name) { - case 'PublicKey': - return value.toBase58(); - case 'BN': - return value.toString(); - default: - return value; - } - }, - 2, - ); -} - -export interface ObligationCollateral { - depositReserve: PublicKey; - depositedAmount: BN; - marketValue: BN; // decimals -} - -export interface ObligationLiquidity { - borrowReserve: PublicKey; - cumulativeBorrowRateWads: BN; // decimals - borrowedAmountWads: BN; // decimals - marketValue: BN; // decimals -} - -export const ObligationLayout: typeof BufferLayout.Structure = BufferLayout.struct([ - BufferLayout.u8('version'), - - LastUpdateLayout, - - Layout.publicKey('lendingMarket'), - Layout.publicKey('owner'), - Layout.uint128('depositedValue'), - Layout.uint128('borrowedValue'), - Layout.uint128('allowedBorrowValue'), - Layout.uint128('unhealthyBorrowValue'), - BufferLayout.blob(64, '_padding'), - - BufferLayout.u8('depositsLen'), - BufferLayout.u8('borrowsLen'), - BufferLayout.blob(1096, 'dataFlat'), -]); - -export const ObligationCollateralLayout: typeof BufferLayout.Structure = BufferLayout.struct([ - Layout.publicKey('depositReserve'), - Layout.uint64('depositedAmount'), - Layout.uint128('marketValue'), - BufferLayout.blob(32, 'padding'), -]); - -export const ObligationLiquidityLayout: typeof BufferLayout.Structure = BufferLayout.struct([ - Layout.publicKey('borrowReserve'), - Layout.uint128('cumulativeBorrowRateWads'), - Layout.uint128('borrowedAmountWads'), - Layout.uint128('marketValue'), - BufferLayout.blob(32, 'padding'), -]); - -export const isObligation = (info: AccountInfo) => info.data.length === ObligationLayout.span; - -export interface ProtoObligation { - version: number; - lastUpdate: LastUpdate; - lendingMarket: PublicKey; - owner: PublicKey; - depositedValue: BN; // decimals - borrowedValue: BN; // decimals - allowedBorrowValue: BN; // decimals - unhealthyBorrowValue: BN; // decimals - depositsLen: number; - borrowsLen: number; - dataFlat: Buffer; -} - -export const ObligationParser = ( - pubkey: PublicKey, - info: AccountInfo, -) => { - const buffer = Buffer.from(info.data); - const { - version, - lastUpdate, - lendingMarket, - owner, - depositedValue, - borrowedValue, - allowedBorrowValue, - unhealthyBorrowValue, - depositsLen, - borrowsLen, - dataFlat, - } = ObligationLayout.decode(buffer) as ProtoObligation; - - if (lastUpdate.slot.isZero()) { - return null; - } - - const depositsBuffer = dataFlat.slice( - 0, - depositsLen * ObligationCollateralLayout.span, - ); - const deposits = BufferLayout.seq( - ObligationCollateralLayout, - depositsLen, - ).decode(depositsBuffer) as ObligationCollateral[]; - - const borrowsBuffer = dataFlat.slice( - depositsBuffer.length, - depositsLen * ObligationCollateralLayout.span - + borrowsLen * ObligationLiquidityLayout.span, - ); - const borrows = BufferLayout.seq( - ObligationLiquidityLayout, - borrowsLen, - ).decode(borrowsBuffer) as ObligationLiquidity[]; - - const obligation = { - version, - lastUpdate, - lendingMarket, - owner, - depositedValue, - borrowedValue, - allowedBorrowValue, - unhealthyBorrowValue, - deposits, - borrows, - } as Obligation; - - const details = { - pubkey, - account: { - ...info, - }, - info: obligation, - }; - - return details; -}; diff --git a/liquidator/src/models/layouts/reserve.ts b/liquidator/src/models/layouts/reserve.ts deleted file mode 100644 index f5bd1fb6..00000000 --- a/liquidator/src/models/layouts/reserve.ts +++ /dev/null @@ -1,163 +0,0 @@ -import { AccountInfo, PublicKey } from '@solana/web3.js'; -import BN from 'bn.js'; -import * as BufferLayout from 'buffer-layout'; -import * as Layout from 'libs/layout'; -import BigNumber from 'bignumber.js'; -import { LastUpdate, LastUpdateLayout } from './lastUpdate'; - -export const RESERVE_LEN = 619; -export const WAD = new BigNumber(1000000000000000000); - -const INITIAL_COLLATERAL_RATIO = 1; -const INITIAL_COLLATERAL_RATE = new BigNumber(INITIAL_COLLATERAL_RATIO).multipliedBy(WAD); -export interface Reserve { - version: number; - lastUpdate: LastUpdate; - lendingMarket: PublicKey; - liquidity: ReserveLiquidity; - collateral: ReserveCollateral; - config: ReserveConfig; -} - -export interface ReserveLiquidity { - mintPubkey: PublicKey; - mintDecimals: number; - supplyPubkey: PublicKey; - // @FIXME: oracle option - oracleOption: number; - pythOraclePubkey: PublicKey; - switchboardOraclePubkey: PublicKey; - availableAmount: BN; - borrowedAmountWads: BN; - cumulativeBorrowRateWads: BN; - marketPrice: BN; -} - -export interface ReserveCollateral { - mintPubkey: PublicKey; - mintTotalSupply: BN; - supplyPubkey: PublicKey; -} - -export interface ReserveConfig { - optimalUtilizationRate: number; - loanToValueRatio: number; - liquidationBonus: number; - liquidationThreshold: number; - minBorrowRate: number; - optimalBorrowRate: number; - maxBorrowRate: number; - fees: { - borrowFeeWad: BN; - hostFeePercentage: number; - }; - depositLimit: BN; -} - -export const ReserveLayout: typeof BufferLayout.Structure = BufferLayout.struct( - [ - BufferLayout.u8('version'), - - LastUpdateLayout, - - Layout.publicKey('lendingMarket'), - - BufferLayout.struct( - [ - Layout.publicKey('mintPubkey'), - BufferLayout.u8('mintDecimals'), - Layout.publicKey('supplyPubkey'), - // @FIXME: oracle option - // TODO: replace u32 option with generic equivalent - // BufferLayout.u32('oracleOption'), - Layout.publicKey('pythOracle'), - Layout.publicKey('switchboardOracle'), - Layout.uint64('availableAmount'), - Layout.uint128('borrowedAmountWads'), - Layout.uint128('cumulativeBorrowRateWads'), - Layout.uint128('marketPrice'), - ], - 'liquidity', - ), - - BufferLayout.struct( - [ - Layout.publicKey('mintPubkey'), - Layout.uint64('mintTotalSupply'), - Layout.publicKey('supplyPubkey'), - ], - 'collateral', - ), - - BufferLayout.struct( - [ - BufferLayout.u8('optimalUtilizationRate'), - BufferLayout.u8('loanToValueRatio'), - BufferLayout.u8('liquidationBonus'), - BufferLayout.u8('liquidationThreshold'), - BufferLayout.u8('minBorrowRate'), - BufferLayout.u8('optimalBorrowRate'), - BufferLayout.u8('maxBorrowRate'), - BufferLayout.struct( - [ - Layout.uint64('borrowFeeWad'), - Layout.uint64('flashLoanFeeWad'), - BufferLayout.u8('hostFeePercentage'), - ], - 'fees', - ), - Layout.uint64('depositLimit'), - Layout.uint64('borrowLimit'), - Layout.publicKey('feeReceiver'), - ], - 'config', - ), - - BufferLayout.blob(256, 'padding'), - ], -); - -export const isReserve = (info: AccountInfo) => info.data.length === ReserveLayout.span; - -export const ReserveParser = (pubkey: PublicKey, info: AccountInfo) => { - const buffer = Buffer.from(info.data); - const reserve = ReserveLayout.decode(buffer) as Reserve; - - if (reserve.lastUpdate.slot.isZero()) { - return null; - } - - const details = { - pubkey, - account: { - ...info, - }, - info: reserve, - }; - - return details; -}; - -export const getCollateralExchangeRate = (reserve: Reserve): BigNumber => { - const totalLiquidity = (new BigNumber(reserve.liquidity.availableAmount.toString()).multipliedBy(WAD)) - .plus(new BigNumber(reserve.liquidity.borrowedAmountWads.toString())); - - const { collateral } = reserve; - let rate; - if (collateral.mintTotalSupply.isZero() || totalLiquidity.isZero()) { - rate = INITIAL_COLLATERAL_RATE; - } else { - const { mintTotalSupply } = collateral; - rate = (new BigNumber(mintTotalSupply.toString()).multipliedBy(WAD)) - .dividedBy(new BigNumber(totalLiquidity.toString())); - } - return rate; -}; - -export const getLoanToValueRate = (reserve: Reserve): BigNumber => new BigNumber( - reserve.config.loanToValueRatio / 100, -); - -export const getLiquidationThresholdRate = (reserve: Reserve): BigNumber => new BigNumber( - reserve.config.liquidationThreshold / 100, -); From 29acf9671bb2720535b2eaca1e09409c45a02698 Mon Sep 17 00:00:00 2001 From: legocactus <0xcactus@solend.fi> Date: Sun, 11 Dec 2022 18:03:59 -0500 Subject: [PATCH 2/2] fix lint --- liquidator/src/libs/unwrap/nazare/ggoldca.ts | 3846 ++++++++--------- .../src/libs/unwrap/nazare/unwrapNazareLp.ts | 1 + .../src/libs/unwrap/unwrapToken.spec.ts | 1 + 3 files changed, 1925 insertions(+), 1923 deletions(-) diff --git a/liquidator/src/libs/unwrap/nazare/ggoldca.ts b/liquidator/src/libs/unwrap/nazare/ggoldca.ts index 2c5b9a82..9137e18e 100644 --- a/liquidator/src/libs/unwrap/nazare/ggoldca.ts +++ b/liquidator/src/libs/unwrap/nazare/ggoldca.ts @@ -1,1160 +1,1160 @@ export type Ggoldca = { - "version": "0.1.0", - "name": "ggoldca", - "instructions": [ + 'version': '0.1.0', + 'name': 'ggoldca', + 'instructions': [ { - "name": "initializeVault", - "accounts": [ + 'name': 'initializeVault', + 'accounts': [ { - "name": "userSigner", - "isMut": true, - "isSigner": true + 'name': 'userSigner', + 'isMut': true, + 'isSigner': true }, { - "name": "whirlpool", - "isMut": false, - "isSigner": false + 'name': 'whirlpool', + 'isMut': false, + 'isSigner': false }, { - "name": "inputTokenAMintAddress", - "isMut": false, - "isSigner": false + 'name': 'inputTokenAMintAddress', + 'isMut': false, + 'isSigner': false }, { - "name": "inputTokenBMintAddress", - "isMut": false, - "isSigner": false + 'name': 'inputTokenBMintAddress', + 'isMut': false, + 'isSigner': false }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultInputTokenAAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultInputTokenAAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultInputTokenBAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultInputTokenBAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultLpTokenMintPubkey", - "isMut": true, - "isSigner": false + 'name': 'vaultLpTokenMintPubkey', + 'isMut': true, + 'isSigner': false }, { - "name": "systemProgram", - "isMut": false, - "isSigner": false + 'name': 'systemProgram', + 'isMut': false, + 'isSigner': false }, { - "name": "associatedTokenProgram", - "isMut": false, - "isSigner": false + 'name': 'associatedTokenProgram', + 'isMut': false, + 'isSigner': false }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + 'name': 'tokenProgram', + 'isMut': false, + 'isSigner': false }, { - "name": "rent", - "isMut": false, - "isSigner": false + 'name': 'rent', + 'isMut': false, + 'isSigner': false } ], - "args": [ + 'args': [ { - "name": "id", - "type": "u8" + 'name': 'id', + 'type': 'u8' }, { - "name": "fee", - "type": "u64" + 'name': 'fee', + 'type': 'u64' }, { - "name": "minSlotsForReinvest", - "type": "u64" + 'name': 'minSlotsForReinvest', + 'type': 'u64' } ] }, { - "name": "setVaultPauseStatus", - "accounts": [ + 'name': 'setVaultPauseStatus', + 'accounts': [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + 'name': 'userSigner', + 'isMut': false, + 'isSigner': true }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': true, + 'isSigner': false } ], - "args": [ + 'args': [ { - "name": "isPaused", - "type": "bool" + 'name': 'isPaused', + 'type': 'bool' } ] }, { - "name": "setVaultUiStatus", - "accounts": [ + 'name': 'setVaultUiStatus', + 'accounts': [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + 'name': 'userSigner', + 'isMut': false, + 'isSigner': true }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': true, + 'isSigner': false } ], - "args": [ + 'args': [ { - "name": "isActive", - "type": "bool" + 'name': 'isActive', + 'type': 'bool' } ] }, { - "name": "openPosition", - "accounts": [ + 'name': 'openPosition', + 'accounts': [ { - "name": "userSigner", - "isMut": true, - "isSigner": true + 'name': 'userSigner', + 'isMut': true, + 'isSigner': true }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + 'name': 'whirlpoolProgramId', + 'isMut': false, + 'isSigner': false }, { - "name": "position", - "isMut": true, - "isSigner": false + 'name': 'position', + 'isMut': true, + 'isSigner': false }, { - "name": "positionMint", - "isMut": true, - "isSigner": true + 'name': 'positionMint', + 'isMut': true, + 'isSigner': true }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'positionTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "whirlpool", - "isMut": false, - "isSigner": false + 'name': 'whirlpool', + 'isMut': false, + 'isSigner': false }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + 'name': 'tokenProgram', + 'isMut': false, + 'isSigner': false }, { - "name": "systemProgram", - "isMut": false, - "isSigner": false + 'name': 'systemProgram', + 'isMut': false, + 'isSigner': false }, { - "name": "rent", - "isMut": false, - "isSigner": false + 'name': 'rent', + 'isMut': false, + 'isSigner': false }, { - "name": "associatedTokenProgram", - "isMut": false, - "isSigner": false + 'name': 'associatedTokenProgram', + 'isMut': false, + 'isSigner': false } ], - "args": [ + 'args': [ { - "name": "bump", - "type": "u8" + 'name': 'bump', + 'type': 'u8' }, { - "name": "tickLowerIndex", - "type": "i32" + 'name': 'tickLowerIndex', + 'type': 'i32' }, { - "name": "tickUpperIndex", - "type": "i32" + 'name': 'tickUpperIndex', + 'type': 'i32' } ] }, { - "name": "closePosition", - "accounts": [ + 'name': 'closePosition', + 'accounts': [ { - "name": "userSigner", - "isMut": true, - "isSigner": true + 'name': 'userSigner', + 'isMut': true, + 'isSigner': true }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + 'name': 'whirlpoolProgramId', + 'isMut': false, + 'isSigner': false }, { - "name": "position", - "isMut": true, - "isSigner": false + 'name': 'position', + 'isMut': true, + 'isSigner': false }, { - "name": "positionMint", - "isMut": true, - "isSigner": false + 'name': 'positionMint', + 'isMut': true, + 'isSigner': false }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'positionTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + 'name': 'tokenProgram', + 'isMut': false, + 'isSigner': false } ], - "args": [] + 'args': [] }, { - "name": "setMarketRewards", - "accounts": [ + 'name': 'setMarketRewards', + 'accounts': [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + 'name': 'userSigner', + 'isMut': false, + 'isSigner': true }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "whirlpool", - "isMut": false, - "isSigner": false + 'name': 'whirlpool', + 'isMut': false, + 'isSigner': false }, { - "name": "rewardsMint", - "isMut": false, - "isSigner": false + 'name': 'rewardsMint', + 'isMut': false, + 'isSigner': false }, { - "name": "destinationTokenAccount", - "isMut": false, - "isSigner": false + 'name': 'destinationTokenAccount', + 'isMut': false, + 'isSigner': false } ], - "args": [ + 'args': [ { - "name": "marketRewards", - "type": { - "defined": "MarketRewardsInfoInput" + 'name': 'marketRewards', + 'type': { + 'defined': 'MarketRewardsInfoInput' } } ] }, { - "name": "setVaultFee", - "accounts": [ + 'name': 'setVaultFee', + 'accounts': [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + 'name': 'userSigner', + 'isMut': false, + 'isSigner': true }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': true, + 'isSigner': false } ], - "args": [ + 'args': [ { - "name": "fee", - "type": "u64" + 'name': 'fee', + 'type': 'u64' } ] }, { - "name": "setMinSlotsForReinvest", - "accounts": [ + 'name': 'setMinSlotsForReinvest', + 'accounts': [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + 'name': 'userSigner', + 'isMut': false, + 'isSigner': true }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': true, + 'isSigner': false } ], - "args": [ + 'args': [ { - "name": "minSlots", - "type": "u64" + 'name': 'minSlots', + 'type': 'u64' } ] }, { - "name": "rebalance", - "accounts": [ + 'name': 'rebalance', + 'accounts': [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + 'name': 'userSigner', + 'isMut': false, + 'isSigner': true }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultInputTokenAAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultInputTokenAAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultInputTokenBAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultInputTokenBAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + 'name': 'whirlpoolProgramId', + 'isMut': false, + 'isSigner': false }, { - "name": "tokenVaultA", - "isMut": true, - "isSigner": false + 'name': 'tokenVaultA', + 'isMut': true, + 'isSigner': false }, { - "name": "tokenVaultB", - "isMut": true, - "isSigner": false + 'name': 'tokenVaultB', + 'isMut': true, + 'isSigner': false }, { - "name": "currentPosition", - "accounts": [ + 'name': 'currentPosition', + 'accounts': [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + 'name': 'whirlpool', + 'isMut': true, + 'isSigner': false }, { - "name": "position", - "isMut": true, - "isSigner": false + 'name': 'position', + 'isMut': true, + 'isSigner': false }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'positionTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + 'name': 'tickArrayLower', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false + 'name': 'tickArrayUpper', + 'isMut': true, + 'isSigner': false } ] }, { - "name": "newPosition", - "accounts": [ + 'name': 'newPosition', + 'accounts': [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + 'name': 'whirlpool', + 'isMut': true, + 'isSigner': false }, { - "name": "position", - "isMut": true, - "isSigner": false + 'name': 'position', + 'isMut': true, + 'isSigner': false }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'positionTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + 'name': 'tickArrayLower', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false + 'name': 'tickArrayUpper', + 'isMut': true, + 'isSigner': false } ] }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + 'name': 'tokenProgram', + 'isMut': false, + 'isSigner': false } ], - "args": [] + 'args': [] }, { - "name": "deposit", - "accounts": [ + 'name': 'deposit', + 'accounts': [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + 'name': 'userSigner', + 'isMut': false, + 'isSigner': true }, { - "name": "vaultAccount", - "isMut": false, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': false, + 'isSigner': false }, { - "name": "vaultLpTokenMintPubkey", - "isMut": true, - "isSigner": false + 'name': 'vaultLpTokenMintPubkey', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultInputTokenAAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultInputTokenAAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultInputTokenBAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultInputTokenBAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "userLpTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'userLpTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "userTokenAAccount", - "isMut": true, - "isSigner": false + 'name': 'userTokenAAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "userTokenBAccount", - "isMut": true, - "isSigner": false + 'name': 'userTokenBAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + 'name': 'whirlpoolProgramId', + 'isMut': false, + 'isSigner': false }, { - "name": "position", - "accounts": [ + 'name': 'position', + 'accounts': [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + 'name': 'whirlpool', + 'isMut': true, + 'isSigner': false }, { - "name": "position", - "isMut": true, - "isSigner": false + 'name': 'position', + 'isMut': true, + 'isSigner': false }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'positionTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + 'name': 'tickArrayLower', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false + 'name': 'tickArrayUpper', + 'isMut': true, + 'isSigner': false } ] }, { - "name": "whTokenVaultA", - "isMut": true, - "isSigner": false + 'name': 'whTokenVaultA', + 'isMut': true, + 'isSigner': false }, { - "name": "whTokenVaultB", - "isMut": true, - "isSigner": false + 'name': 'whTokenVaultB', + 'isMut': true, + 'isSigner': false }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + 'name': 'tokenProgram', + 'isMut': false, + 'isSigner': false } ], - "args": [ + 'args': [ { - "name": "lpAmount", - "type": "u64" + 'name': 'lpAmount', + 'type': 'u64' }, { - "name": "maxAmountA", - "type": "u64" + 'name': 'maxAmountA', + 'type': 'u64' }, { - "name": "maxAmountB", - "type": "u64" + 'name': 'maxAmountB', + 'type': 'u64' } ] }, { - "name": "withdraw", - "accounts": [ + 'name': 'withdraw', + 'accounts': [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + 'name': 'userSigner', + 'isMut': false, + 'isSigner': true }, { - "name": "vaultAccount", - "isMut": false, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': false, + 'isSigner': false }, { - "name": "vaultLpTokenMintPubkey", - "isMut": true, - "isSigner": false + 'name': 'vaultLpTokenMintPubkey', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultInputTokenAAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultInputTokenAAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultInputTokenBAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultInputTokenBAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "userLpTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'userLpTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "userTokenAAccount", - "isMut": true, - "isSigner": false + 'name': 'userTokenAAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "userTokenBAccount", - "isMut": true, - "isSigner": false + 'name': 'userTokenBAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + 'name': 'whirlpoolProgramId', + 'isMut': false, + 'isSigner': false }, { - "name": "position", - "accounts": [ + 'name': 'position', + 'accounts': [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + 'name': 'whirlpool', + 'isMut': true, + 'isSigner': false }, { - "name": "position", - "isMut": true, - "isSigner": false + 'name': 'position', + 'isMut': true, + 'isSigner': false }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'positionTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + 'name': 'tickArrayLower', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false + 'name': 'tickArrayUpper', + 'isMut': true, + 'isSigner': false } ] }, { - "name": "whTokenVaultA", - "isMut": true, - "isSigner": false + 'name': 'whTokenVaultA', + 'isMut': true, + 'isSigner': false }, { - "name": "whTokenVaultB", - "isMut": true, - "isSigner": false + 'name': 'whTokenVaultB', + 'isMut': true, + 'isSigner': false }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + 'name': 'tokenProgram', + 'isMut': false, + 'isSigner': false } ], - "args": [ + 'args': [ { - "name": "lpAmount", - "type": "u64" + 'name': 'lpAmount', + 'type': 'u64' }, { - "name": "minAmountA", - "type": "u64" + 'name': 'minAmountA', + 'type': 'u64' }, { - "name": "minAmountB", - "type": "u64" + 'name': 'minAmountB', + 'type': 'u64' } ] }, { - "name": "collectFees", - "accounts": [ + 'name': 'collectFees', + 'accounts': [ { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultInputTokenAAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultInputTokenAAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultInputTokenBAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultInputTokenBAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "treasuryTokenAAccount", - "isMut": true, - "isSigner": false + 'name': 'treasuryTokenAAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "treasuryTokenBAccount", - "isMut": true, - "isSigner": false + 'name': 'treasuryTokenBAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + 'name': 'whirlpoolProgramId', + 'isMut': false, + 'isSigner': false }, { - "name": "tokenVaultA", - "isMut": true, - "isSigner": false + 'name': 'tokenVaultA', + 'isMut': true, + 'isSigner': false }, { - "name": "tokenVaultB", - "isMut": true, - "isSigner": false + 'name': 'tokenVaultB', + 'isMut': true, + 'isSigner': false }, { - "name": "position", - "accounts": [ + 'name': 'position', + 'accounts': [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + 'name': 'whirlpool', + 'isMut': true, + 'isSigner': false }, { - "name": "position", - "isMut": true, - "isSigner": false + 'name': 'position', + 'isMut': true, + 'isSigner': false }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'positionTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + 'name': 'tickArrayLower', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false + 'name': 'tickArrayUpper', + 'isMut': true, + 'isSigner': false } ] }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + 'name': 'tokenProgram', + 'isMut': false, + 'isSigner': false } ], - "args": [] + 'args': [] }, { - "name": "collectRewards", - "accounts": [ + 'name': 'collectRewards', + 'accounts': [ { - "name": "vaultAccount", - "isMut": false, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': false, + 'isSigner': false }, { - "name": "vaultRewardsTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultRewardsTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "treasuryRewardsTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'treasuryRewardsTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "rewardVault", - "isMut": true, - "isSigner": false + 'name': 'rewardVault', + 'isMut': true, + 'isSigner': false }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + 'name': 'whirlpoolProgramId', + 'isMut': false, + 'isSigner': false }, { - "name": "position", - "accounts": [ + 'name': 'position', + 'accounts': [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + 'name': 'whirlpool', + 'isMut': true, + 'isSigner': false }, { - "name": "position", - "isMut": true, - "isSigner": false + 'name': 'position', + 'isMut': true, + 'isSigner': false }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'positionTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + 'name': 'tickArrayLower', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false + 'name': 'tickArrayUpper', + 'isMut': true, + 'isSigner': false } ] }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + 'name': 'tokenProgram', + 'isMut': false, + 'isSigner': false } ], - "args": [ + 'args': [ { - "name": "rewardIndex", - "type": "u8" + 'name': 'rewardIndex', + 'type': 'u8' } ] }, { - "name": "swapRewards", - "accounts": [ + 'name': 'swapRewards', + 'accounts': [ { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultRewardsTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultRewardsTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultDestinationTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultDestinationTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + 'name': 'tokenProgram', + 'isMut': false, + 'isSigner': false }, { - "name": "swapProgram", - "isMut": false, - "isSigner": false + 'name': 'swapProgram', + 'isMut': false, + 'isSigner': false } ], - "args": [] + 'args': [] }, { - "name": "transferRewards", - "accounts": [ + 'name': 'transferRewards', + 'accounts': [ { - "name": "vaultAccount", - "isMut": false, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': false, + 'isSigner': false }, { - "name": "vaultRewardsTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultRewardsTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "destinationTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'destinationTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + 'name': 'tokenProgram', + 'isMut': false, + 'isSigner': false } ], - "args": [] + 'args': [] }, { - "name": "reinvest", - "accounts": [ + 'name': 'reinvest', + 'accounts': [ { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultLpTokenMintPubkey", - "isMut": false, - "isSigner": false + 'name': 'vaultLpTokenMintPubkey', + 'isMut': false, + 'isSigner': false }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + 'name': 'whirlpoolProgramId', + 'isMut': false, + 'isSigner': false }, { - "name": "vaultInputTokenAAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultInputTokenAAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultInputTokenBAccount", - "isMut": true, - "isSigner": false + 'name': 'vaultInputTokenBAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "tokenVaultA", - "isMut": true, - "isSigner": false + 'name': 'tokenVaultA', + 'isMut': true, + 'isSigner': false }, { - "name": "tokenVaultB", - "isMut": true, - "isSigner": false + 'name': 'tokenVaultB', + 'isMut': true, + 'isSigner': false }, { - "name": "position", - "accounts": [ + 'name': 'position', + 'accounts': [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + 'name': 'whirlpool', + 'isMut': true, + 'isSigner': false }, { - "name": "position", - "isMut": true, - "isSigner": false + 'name': 'position', + 'isMut': true, + 'isSigner': false }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + 'name': 'positionTokenAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + 'name': 'tickArrayLower', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false + 'name': 'tickArrayUpper', + 'isMut': true, + 'isSigner': false } ] }, { - "name": "tickArray0", - "isMut": true, - "isSigner": false + 'name': 'tickArray0', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArray1", - "isMut": true, - "isSigner": false + 'name': 'tickArray1', + 'isMut': true, + 'isSigner': false }, { - "name": "tickArray2", - "isMut": true, - "isSigner": false + 'name': 'tickArray2', + 'isMut': true, + 'isSigner': false }, { - "name": "oracle", - "isMut": true, - "isSigner": false + 'name': 'oracle', + 'isMut': true, + 'isSigner': false }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + 'name': 'tokenProgram', + 'isMut': false, + 'isSigner': false } ], - "args": [] + 'args': [] }, { - "name": "setTokenMetadata", - "accounts": [ + 'name': 'setTokenMetadata', + 'accounts': [ { - "name": "metadataAccount", - "isMut": true, - "isSigner": false + 'name': 'metadataAccount', + 'isMut': true, + 'isSigner': false }, { - "name": "vaultAccount", - "isMut": false, - "isSigner": false + 'name': 'vaultAccount', + 'isMut': false, + 'isSigner': false }, { - "name": "vaultLpTokenMintPubkey", - "isMut": true, - "isSigner": false + 'name': 'vaultLpTokenMintPubkey', + 'isMut': true, + 'isSigner': false }, { - "name": "userSigner", - "isMut": true, - "isSigner": true + 'name': 'userSigner', + 'isMut': true, + 'isSigner': true }, { - "name": "tokenMetadataProgram", - "isMut": false, - "isSigner": false + 'name': 'tokenMetadataProgram', + 'isMut': false, + 'isSigner': false }, { - "name": "associatedTokenProgram", - "isMut": false, - "isSigner": false + 'name': 'associatedTokenProgram', + 'isMut': false, + 'isSigner': false }, { - "name": "systemProgram", - "isMut": false, - "isSigner": false + 'name': 'systemProgram', + 'isMut': false, + 'isSigner': false }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + 'name': 'tokenProgram', + 'isMut': false, + 'isSigner': false }, { - "name": "rent", - "isMut": false, - "isSigner": false + 'name': 'rent', + 'isMut': false, + 'isSigner': false } ], - "args": [ + 'args': [ { - "name": "tokenName", - "type": "string" + 'name': 'tokenName', + 'type': 'string' }, { - "name": "tokenSymbol", - "type": "string" + 'name': 'tokenSymbol', + 'type': 'string' }, { - "name": "tokenUri", - "type": "string" + 'name': 'tokenUri', + 'type': 'string' }, { - "name": "firstTime", - "type": "bool" + 'name': 'firstTime', + 'type': 'bool' } ] } ], - "accounts": [ + 'accounts': [ { - "name": "vaultAccount", - "docs": [ - "Strategy vault account" + 'name': 'vaultAccount', + 'docs': [ + 'Strategy vault account' ], - "type": { - "kind": "struct", - "fields": [ + 'type': { + 'kind': 'struct', + 'fields': [ { - "name": "version", - "docs": [ - "Vault version" + 'name': 'version', + 'docs': [ + 'Vault version' ], - "type": "u8" + 'type': 'u8' }, { - "name": "isActiveFromUi", - "docs": [ - "The vault is active from the UI" + 'name': 'isActiveFromUi', + 'docs': [ + 'The vault is active from the UI' ], - "type": "bool" + 'type': 'bool' }, { - "name": "isPaused", - "docs": [ - "The smart contract is paused for this vault" + 'name': 'isPaused', + 'docs': [ + 'The smart contract is paused for this vault' ], - "type": "bool" + 'type': 'bool' }, { - "name": "id", - "docs": [ - "Vault number for a given whirlpool" + 'name': 'id', + 'docs': [ + 'Vault number for a given whirlpool' ], - "type": "u8" + 'type': 'u8' }, { - "name": "bumps", - "docs": [ - "PDA bump seeds" + 'name': 'bumps', + 'docs': [ + 'PDA bump seeds' ], - "type": { - "defined": "Bumps" + 'type': { + 'defined': 'Bumps' } }, { - "name": "whirlpoolId", - "docs": [ - "Whirlpool pubkey" + 'name': 'whirlpoolId', + 'docs': [ + 'Whirlpool pubkey' ], - "type": "publicKey" + 'type': 'publicKey' }, { - "name": "inputTokenAMintPubkey", - "docs": [ - "Pool input token_a mint address" + 'name': 'inputTokenAMintPubkey', + 'docs': [ + 'Pool input token_a mint address' ], - "type": "publicKey" + 'type': 'publicKey' }, { - "name": "inputTokenBMintPubkey", - "docs": [ - "Pool input token_b mint address" + 'name': 'inputTokenBMintPubkey', + 'docs': [ + 'Pool input token_b mint address' ], - "type": "publicKey" + 'type': 'publicKey' }, { - "name": "fee", - "docs": [ - "Fee percentage using FEE_SCALE. Fee applied on earnings" + 'name': 'fee', + 'docs': [ + 'Fee percentage using FEE_SCALE. Fee applied on earnings' ], - "type": "u64" + 'type': 'u64' }, { - "name": "minSlotsForReinvest", - "docs": [ - "Minimum number of elapsed slots required for reinvesting" + 'name': 'minSlotsForReinvest', + 'docs': [ + 'Minimum number of elapsed slots required for reinvesting' ], - "type": "u64" + 'type': 'u64' }, { - "name": "lastReinvestmentSlot", - "docs": [ - "Last reinvestment slot" + 'name': 'lastReinvestmentSlot', + 'docs': [ + 'Last reinvestment slot' ], - "type": "u64" + 'type': 'u64' }, { - "name": "lastLiquidityIncrease", - "docs": [ - "Last reinvestment liquidity increase" + 'name': 'lastLiquidityIncrease', + 'docs': [ + 'Last reinvestment liquidity increase' ], - "type": "u128" + 'type': 'u128' }, { - "name": "earnedRewardsTokenA", - "docs": [ - "Total rewards earned by the vault" + 'name': 'earnedRewardsTokenA', + 'docs': [ + 'Total rewards earned by the vault' ], - "type": "u64" + 'type': 'u64' }, { - "name": "earnedRewardsTokenB", - "type": "u64" + 'name': 'earnedRewardsTokenB', + 'type': 'u64' }, { - "name": "marketRewards", - "docs": [ - "The market where to sell the rewards" + 'name': 'marketRewards', + 'docs': [ + 'The market where to sell the rewards' ], - "type": { - "array": [ + 'type': { + 'array': [ { - "defined": "MarketRewardsInfo" + 'defined': 'MarketRewardsInfo' }, 3 ] } }, { - "name": "positions", - "docs": [ - "Information about the opened positions (max = MAX_POSITIONS)" + 'name': 'positions', + 'docs': [ + 'Information about the opened positions (max = MAX_POSITIONS)' ], - "type": { - "vec": { - "defined": "PositionInfo" + 'type': { + 'vec': { + 'defined': 'PositionInfo' } } }, { - "name": "padding", - "docs": [ - "Additional padding" + 'name': 'padding', + 'docs': [ + 'Additional padding' ], - "type": { - "array": [ - "u64", + 'type': { + 'array': [ + 'u64', 10 ] } @@ -1163,2069 +1163,2069 @@ export type Ggoldca = { } } ], - "types": [ + 'types': [ { - "name": "MarketRewardsInfoInput", - "type": { - "kind": "struct", - "fields": [ + 'name': 'MarketRewardsInfoInput', + 'type': { + 'kind': 'struct', + 'fields': [ { - "name": "id", - "docs": [ - "Id of market associated" + 'name': 'id', + 'docs': [ + 'Id of market associated' ], - "type": { - "defined": "MarketRewards" + 'type': { + 'defined': 'MarketRewards' } }, { - "name": "minAmountOut", - "docs": [ - "Minimum number of lamports to receive during swap" + 'name': 'minAmountOut', + 'docs': [ + 'Minimum number of lamports to receive during swap' ], - "type": "u64" + 'type': 'u64' } ] } }, { - "name": "Bumps", - "docs": [ - "PDA bump seeds" + 'name': 'Bumps', + 'docs': [ + 'PDA bump seeds' ], - "type": { - "kind": "struct", - "fields": [ + 'type': { + 'kind': 'struct', + 'fields': [ { - "name": "vault", - "type": "u8" + 'name': 'vault', + 'type': 'u8' }, { - "name": "lpTokenMint", - "type": "u8" + 'name': 'lpTokenMint', + 'type': 'u8' } ] } }, { - "name": "PositionInfo", - "docs": [ - "Position information" + 'name': 'PositionInfo', + 'docs': [ + 'Position information' ], - "type": { - "kind": "struct", - "fields": [ + 'type': { + 'kind': 'struct', + 'fields': [ { - "name": "pubkey", - "docs": [ - "Position pubkey" + 'name': 'pubkey', + 'docs': [ + 'Position pubkey' ], - "type": "publicKey" + 'type': 'publicKey' }, { - "name": "lowerTick", - "docs": [ - "Position lower tick" + 'name': 'lowerTick', + 'docs': [ + 'Position lower tick' ], - "type": "i32" + 'type': 'i32' }, { - "name": "upperTick", - "docs": [ - "Position upper tick" + 'name': 'upperTick', + 'docs': [ + 'Position upper tick' ], - "type": "i32" + 'type': 'i32' } ] } }, { - "name": "MarketRewardsInfo", - "type": { - "kind": "struct", - "fields": [ + 'name': 'MarketRewardsInfo', + 'type': { + 'kind': 'struct', + 'fields': [ { - "name": "id", - "docs": [ - "Id of market associated" + 'name': 'id', + 'docs': [ + 'Id of market associated' ], - "type": { - "defined": "MarketRewards" + 'type': { + 'defined': 'MarketRewards' } }, { - "name": "rewardsMint", - "docs": [ - "Pubkey of the rewards token mint" + 'name': 'rewardsMint', + 'docs': [ + 'Pubkey of the rewards token mint' ], - "type": "publicKey" + 'type': 'publicKey' }, { - "name": "destinationTokenAccount", - "docs": [ - "Destination account" + 'name': 'destinationTokenAccount', + 'docs': [ + 'Destination account' ], - "type": "publicKey" + 'type': 'publicKey' }, { - "name": "minAmountOut", - "docs": [ - "Minimum number of lamports to receive during swap" + 'name': 'minAmountOut', + 'docs': [ + 'Minimum number of lamports to receive during swap' ], - "type": "u64" + 'type': 'u64' } ] } }, { - "name": "MarketRewards", - "type": { - "kind": "enum", - "variants": [ + 'name': 'MarketRewards', + 'type': { + 'kind': 'enum', + 'variants': [ { - "name": "NotSet" + 'name': 'NotSet' }, { - "name": "Transfer" + 'name': 'Transfer' }, { - "name": "OrcaV2" + 'name': 'OrcaV2' }, { - "name": "Whirlpool" + 'name': 'Whirlpool' } ] } } ], - "events": [ + 'events': [ { - "name": "CollectFeesEvent", - "fields": [ + 'name': 'CollectFeesEvent', + 'fields': [ { - "name": "vaultAccount", - "type": "publicKey", - "index": false + 'name': 'vaultAccount', + 'type': 'publicKey', + 'index': false }, { - "name": "totalFeesTokenA", - "type": "u64", - "index": false + 'name': 'totalFeesTokenA', + 'type': 'u64', + 'index': false }, { - "name": "totalFeesTokenB", - "type": "u64", - "index": false + 'name': 'totalFeesTokenB', + 'type': 'u64', + 'index': false }, { - "name": "treasuryFeeTokenA", - "type": "u64", - "index": false + 'name': 'treasuryFeeTokenA', + 'type': 'u64', + 'index': false }, { - "name": "treasuryFeeTokenB", - "type": "u64", - "index": false + 'name': 'treasuryFeeTokenB', + 'type': 'u64', + 'index': false } ] }, { - "name": "CollectRewardsEvent", - "fields": [ + 'name': 'CollectRewardsEvent', + 'fields': [ { - "name": "vaultAccount", - "type": "publicKey", - "index": false + 'name': 'vaultAccount', + 'type': 'publicKey', + 'index': false }, { - "name": "totalRewards", - "type": "u64", - "index": false + 'name': 'totalRewards', + 'type': 'u64', + 'index': false }, { - "name": "treasuryFee", - "type": "u64", - "index": false + 'name': 'treasuryFee', + 'type': 'u64', + 'index': false } ] }, { - "name": "DepositWithdrawEvent", - "fields": [ + 'name': 'DepositWithdrawEvent', + 'fields': [ { - "name": "vaultAccount", - "type": "publicKey", - "index": false + 'name': 'vaultAccount', + 'type': 'publicKey', + 'index': false }, { - "name": "amountA", - "type": "u64", - "index": false + 'name': 'amountA', + 'type': 'u64', + 'index': false }, { - "name": "amountB", - "type": "u64", - "index": false + 'name': 'amountB', + 'type': 'u64', + 'index': false }, { - "name": "liquidity", - "type": "u128", - "index": false + 'name': 'liquidity', + 'type': 'u128', + 'index': false } ] }, { - "name": "RebalanceEvent", - "fields": [ + 'name': 'RebalanceEvent', + 'fields': [ { - "name": "vaultAccount", - "type": "publicKey", - "index": false + 'name': 'vaultAccount', + 'type': 'publicKey', + 'index': false }, { - "name": "oldLiquidity", - "type": "u128", - "index": false + 'name': 'oldLiquidity', + 'type': 'u128', + 'index': false }, { - "name": "newLiquidity", - "type": "u128", - "index": false + 'name': 'newLiquidity', + 'type': 'u128', + 'index': false } ] }, { - "name": "ReinvestEvent", - "fields": [ + 'name': 'ReinvestEvent', + 'fields': [ { - "name": "vaultAccount", - "type": "publicKey", - "index": false + 'name': 'vaultAccount', + 'type': 'publicKey', + 'index': false }, { - "name": "lpSupply", - "type": "u64", - "index": false + 'name': 'lpSupply', + 'type': 'u64', + 'index': false }, { - "name": "liquidity", - "type": "u128", - "index": false + 'name': 'liquidity', + 'type': 'u128', + 'index': false }, { - "name": "liquidityIncrease", - "type": "u128", - "index": false + 'name': 'liquidityIncrease', + 'type': 'u128', + 'index': false }, { - "name": "elapsedSlots", - "type": "u64", - "index": false + 'name': 'elapsedSlots', + 'type': 'u64', + 'index': false } ] }, { - "name": "SwapEvent", - "fields": [ + 'name': 'SwapEvent', + 'fields': [ { - "name": "vaultAccount", - "type": "publicKey", - "index": false + 'name': 'vaultAccount', + 'type': 'publicKey', + 'index': false }, { - "name": "mintIn", - "type": "publicKey", - "index": false + 'name': 'mintIn', + 'type': 'publicKey', + 'index': false }, { - "name": "amountIn", - "type": "u64", - "index": false + 'name': 'amountIn', + 'type': 'u64', + 'index': false }, { - "name": "mintOut", - "type": "publicKey", - "index": false + 'name': 'mintOut', + 'type': 'publicKey', + 'index': false }, { - "name": "amountOut", - "type": "u64", - "index": false + 'name': 'amountOut', + 'type': 'u64', + 'index': false } ] } ], - "errors": [ + 'errors': [ { - "code": 6000, - "name": "MathOverflowAdd", - "msg": "Math overflow during add" + 'code': 6000, + 'name': 'MathOverflowAdd', + 'msg': 'Math overflow during add' }, { - "code": 6001, - "name": "MathOverflowSub", - "msg": "Math overflow during sub" + 'code': 6001, + 'name': 'MathOverflowSub', + 'msg': 'Math overflow during sub' }, { - "code": 6002, - "name": "MathOverflowMul", - "msg": "Math overflow during mul" + 'code': 6002, + 'name': 'MathOverflowMul', + 'msg': 'Math overflow during mul' }, { - "code": 6003, - "name": "MathZeroDivision", - "msg": "Math division by zero" + 'code': 6003, + 'name': 'MathZeroDivision', + 'msg': 'Math division by zero' }, { - "code": 6004, - "name": "MathOverflowConversion", - "msg": "Math overflow during type conversion" + 'code': 6004, + 'name': 'MathOverflowConversion', + 'msg': 'Math overflow during type conversion' }, { - "code": 6005, - "name": "InvalidVaultVersion", - "msg": "Invalid vault version" + 'code': 6005, + 'name': 'InvalidVaultVersion', + 'msg': 'Invalid vault version' }, { - "code": 6006, - "name": "UnauthorizedUser", - "msg": "Unauthorized user" + 'code': 6006, + 'name': 'UnauthorizedUser', + 'msg': 'Unauthorized user' }, { - "code": 6007, - "name": "PausedSmartContract", - "msg": "The smart contract is paused" + 'code': 6007, + 'name': 'PausedSmartContract', + 'msg': 'The smart contract is paused' }, { - "code": 6008, - "name": "PausedVault", - "msg": "The provided vault is paused" + 'code': 6008, + 'name': 'PausedVault', + 'msg': 'The provided vault is paused' }, { - "code": 6009, - "name": "NotEnoughSlots", - "msg": "Not enough elapsed slots since last call" + 'code': 6009, + 'name': 'NotEnoughSlots', + 'msg': 'Not enough elapsed slots since last call' }, { - "code": 6010, - "name": "InvalidFee", - "msg": "Fee cannot exceed FEE_SCALE" + 'code': 6010, + 'name': 'InvalidFee', + 'msg': 'Fee cannot exceed FEE_SCALE' }, { - "code": 6011, - "name": "MarketInvalidDestination", - "msg": "Market rewards input invalid destination account mint" + 'code': 6011, + 'name': 'MarketInvalidDestination', + 'msg': 'Market rewards input invalid destination account mint' }, { - "code": 6012, - "name": "MarketInvalidMint", - "msg": "Market rewards input tokens not allowed" + 'code': 6012, + 'name': 'MarketInvalidMint', + 'msg': 'Market rewards input tokens not allowed' }, { - "code": 6013, - "name": "MarketInvalidZeroAmount", - "msg": "Market rewards input zero min_amount_out not allowed" + 'code': 6013, + 'name': 'MarketInvalidZeroAmount', + 'msg': 'Market rewards input zero min_amount_out not allowed' }, { - "code": 6014, - "name": "ZeroLpAmount", - "msg": "LP amount must be greater than zero" + 'code': 6014, + 'name': 'ZeroLpAmount', + 'msg': 'LP amount must be greater than zero' }, { - "code": 6015, - "name": "ExceededTokenMax", - "msg": "Exceeded token max" + 'code': 6015, + 'name': 'ExceededTokenMax', + 'msg': 'Exceeded token max' }, { - "code": 6016, - "name": "InvalidDestinationAccount", - "msg": "Invalid destination token account" + 'code': 6016, + 'name': 'InvalidDestinationAccount', + 'msg': 'Invalid destination token account' }, { - "code": 6017, - "name": "InvalidInputMint", - "msg": "Invalid input token mint pubkey" + 'code': 6017, + 'name': 'InvalidInputMint', + 'msg': 'Invalid input token mint pubkey' }, { - "code": 6018, - "name": "InvalidRewardMint", - "msg": "Invalid reward token mint pubkey" + 'code': 6018, + 'name': 'InvalidRewardMint', + 'msg': 'Invalid reward token mint pubkey' }, { - "code": 6019, - "name": "PositionAlreadyOpened", - "msg": "Position already opened" + 'code': 6019, + 'name': 'PositionAlreadyOpened', + 'msg': 'Position already opened' }, { - "code": 6020, - "name": "PositionLimitReached", - "msg": "Position limit reached" + 'code': 6020, + 'name': 'PositionLimitReached', + 'msg': 'Position limit reached' }, { - "code": 6021, - "name": "PositionNotActive", - "msg": "Position is not active" + 'code': 6021, + 'name': 'PositionNotActive', + 'msg': 'Position is not active' }, { - "code": 6022, - "name": "PositionNonExistence", - "msg": "Position does not exist" + 'code': 6022, + 'name': 'PositionNonExistence', + 'msg': 'Position does not exist' }, { - "code": 6023, - "name": "NotEnoughFees", - "msg": "Not enough fees generated yet" + 'code': 6023, + 'name': 'NotEnoughFees', + 'msg': 'Not enough fees generated yet' }, { - "code": 6024, - "name": "NotEnoughRewards", - "msg": "Not enough rewards generated yet" + 'code': 6024, + 'name': 'NotEnoughRewards', + 'msg': 'Not enough rewards generated yet' }, { - "code": 6025, - "name": "InvalidNumberOfAccounts", - "msg": "Invalid number of accounts" + 'code': 6025, + 'name': 'InvalidNumberOfAccounts', + 'msg': 'Invalid number of accounts' }, { - "code": 6026, - "name": "SwapNotSet", - "msg": "Swap is not set for the current rewards" + 'code': 6026, + 'name': 'SwapNotSet', + 'msg': 'Swap is not set for the current rewards' }, { - "code": 6027, - "name": "SwapInvalidProgramId", - "msg": "Invalid swap program ID" + 'code': 6027, + 'name': 'SwapInvalidProgramId', + 'msg': 'Invalid swap program ID' }, { - "code": 6028, - "name": "TransferNotSet", - "msg": "Transfer is not set for the current rewards" + 'code': 6028, + 'name': 'TransferNotSet', + 'msg': 'Transfer is not set for the current rewards' }, { - "code": 6029, - "name": "WhirlpoolLiquidityTooHigh", - "msg": "whirlpool_cpi: Liquidity amount must be less than i64::MAX" + 'code': 6029, + 'name': 'WhirlpoolLiquidityTooHigh', + 'msg': 'whirlpool_cpi: Liquidity amount must be less than i64::MAX' }, { - "code": 6030, - "name": "WhirlpoolLiquidityToDeltasOverflow", - "msg": "whirlpool_cpi: Overflow while computing liquidity to token deltas" + 'code': 6030, + 'name': 'WhirlpoolLiquidityToDeltasOverflow', + 'msg': 'whirlpool_cpi: Overflow while computing liquidity to token deltas' } ] }; export const IDL: Ggoldca = { - "version": "0.1.0", - "name": "ggoldca", - "instructions": [ + version: '0.1.0', + name: 'ggoldca', + instructions: [ { - "name": "initializeVault", - "accounts": [ + name: 'initializeVault', + accounts: [ { - "name": "userSigner", - "isMut": true, - "isSigner": true + name: 'userSigner', + isMut: true, + isSigner: true, }, { - "name": "whirlpool", - "isMut": false, - "isSigner": false + name: 'whirlpool', + isMut: false, + isSigner: false, }, { - "name": "inputTokenAMintAddress", - "isMut": false, - "isSigner": false + name: 'inputTokenAMintAddress', + isMut: false, + isSigner: false, }, { - "name": "inputTokenBMintAddress", - "isMut": false, - "isSigner": false + name: 'inputTokenBMintAddress', + isMut: false, + isSigner: false, }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + name: 'vaultAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultInputTokenAAccount", - "isMut": true, - "isSigner": false + name: 'vaultInputTokenAAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultInputTokenBAccount", - "isMut": true, - "isSigner": false + name: 'vaultInputTokenBAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultLpTokenMintPubkey", - "isMut": true, - "isSigner": false + name: 'vaultLpTokenMintPubkey', + isMut: true, + isSigner: false, }, { - "name": "systemProgram", - "isMut": false, - "isSigner": false + name: 'systemProgram', + isMut: false, + isSigner: false, }, { - "name": "associatedTokenProgram", - "isMut": false, - "isSigner": false + name: 'associatedTokenProgram', + isMut: false, + isSigner: false, }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + name: 'tokenProgram', + isMut: false, + isSigner: false, }, { - "name": "rent", - "isMut": false, - "isSigner": false - } + name: 'rent', + isMut: false, + isSigner: false, + }, ], - "args": [ + args: [ { - "name": "id", - "type": "u8" + name: 'id', + type: 'u8', }, { - "name": "fee", - "type": "u64" + name: 'fee', + type: 'u64', }, { - "name": "minSlotsForReinvest", - "type": "u64" - } - ] + name: 'minSlotsForReinvest', + type: 'u64', + }, + ], }, { - "name": "setVaultPauseStatus", - "accounts": [ + name: 'setVaultPauseStatus', + accounts: [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + name: 'userSigner', + isMut: false, + isSigner: true, }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false - } + name: 'vaultAccount', + isMut: true, + isSigner: false, + }, ], - "args": [ + args: [ { - "name": "isPaused", - "type": "bool" - } - ] + name: 'isPaused', + type: 'bool', + }, + ], }, { - "name": "setVaultUiStatus", - "accounts": [ + name: 'setVaultUiStatus', + accounts: [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + name: 'userSigner', + isMut: false, + isSigner: true, }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false - } + name: 'vaultAccount', + isMut: true, + isSigner: false, + }, ], - "args": [ + args: [ { - "name": "isActive", - "type": "bool" - } - ] + name: 'isActive', + type: 'bool', + }, + ], }, { - "name": "openPosition", - "accounts": [ + name: 'openPosition', + accounts: [ { - "name": "userSigner", - "isMut": true, - "isSigner": true + name: 'userSigner', + isMut: true, + isSigner: true, }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + name: 'vaultAccount', + isMut: true, + isSigner: false, }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + name: 'whirlpoolProgramId', + isMut: false, + isSigner: false, }, { - "name": "position", - "isMut": true, - "isSigner": false + name: 'position', + isMut: true, + isSigner: false, }, { - "name": "positionMint", - "isMut": true, - "isSigner": true + name: 'positionMint', + isMut: true, + isSigner: true, }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + name: 'positionTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "whirlpool", - "isMut": false, - "isSigner": false + name: 'whirlpool', + isMut: false, + isSigner: false, }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + name: 'tokenProgram', + isMut: false, + isSigner: false, }, { - "name": "systemProgram", - "isMut": false, - "isSigner": false + name: 'systemProgram', + isMut: false, + isSigner: false, }, { - "name": "rent", - "isMut": false, - "isSigner": false + name: 'rent', + isMut: false, + isSigner: false, }, { - "name": "associatedTokenProgram", - "isMut": false, - "isSigner": false - } + name: 'associatedTokenProgram', + isMut: false, + isSigner: false, + }, ], - "args": [ + args: [ { - "name": "bump", - "type": "u8" + name: 'bump', + type: 'u8', }, { - "name": "tickLowerIndex", - "type": "i32" + name: 'tickLowerIndex', + type: 'i32', }, { - "name": "tickUpperIndex", - "type": "i32" - } - ] + name: 'tickUpperIndex', + type: 'i32', + }, + ], }, { - "name": "closePosition", - "accounts": [ + name: 'closePosition', + accounts: [ { - "name": "userSigner", - "isMut": true, - "isSigner": true + name: 'userSigner', + isMut: true, + isSigner: true, }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + name: 'vaultAccount', + isMut: true, + isSigner: false, }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + name: 'whirlpoolProgramId', + isMut: false, + isSigner: false, }, { - "name": "position", - "isMut": true, - "isSigner": false + name: 'position', + isMut: true, + isSigner: false, }, { - "name": "positionMint", - "isMut": true, - "isSigner": false + name: 'positionMint', + isMut: true, + isSigner: false, }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + name: 'positionTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, ], - "args": [] + args: [], }, { - "name": "setMarketRewards", - "accounts": [ + name: 'setMarketRewards', + accounts: [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + name: 'userSigner', + isMut: false, + isSigner: true, }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + name: 'vaultAccount', + isMut: true, + isSigner: false, }, { - "name": "whirlpool", - "isMut": false, - "isSigner": false + name: 'whirlpool', + isMut: false, + isSigner: false, }, { - "name": "rewardsMint", - "isMut": false, - "isSigner": false + name: 'rewardsMint', + isMut: false, + isSigner: false, }, { - "name": "destinationTokenAccount", - "isMut": false, - "isSigner": false - } + name: 'destinationTokenAccount', + isMut: false, + isSigner: false, + }, ], - "args": [ + args: [ { - "name": "marketRewards", - "type": { - "defined": "MarketRewardsInfoInput" - } - } - ] + name: 'marketRewards', + type: { + defined: 'MarketRewardsInfoInput', + }, + }, + ], }, { - "name": "setVaultFee", - "accounts": [ + name: 'setVaultFee', + accounts: [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + name: 'userSigner', + isMut: false, + isSigner: true, }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false - } + name: 'vaultAccount', + isMut: true, + isSigner: false, + }, ], - "args": [ + args: [ { - "name": "fee", - "type": "u64" - } - ] + name: 'fee', + type: 'u64', + }, + ], }, { - "name": "setMinSlotsForReinvest", - "accounts": [ + name: 'setMinSlotsForReinvest', + accounts: [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + name: 'userSigner', + isMut: false, + isSigner: true, }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false - } + name: 'vaultAccount', + isMut: true, + isSigner: false, + }, ], - "args": [ + args: [ { - "name": "minSlots", - "type": "u64" - } - ] + name: 'minSlots', + type: 'u64', + }, + ], }, { - "name": "rebalance", - "accounts": [ + name: 'rebalance', + accounts: [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + name: 'userSigner', + isMut: false, + isSigner: true, }, { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + name: 'vaultAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultInputTokenAAccount", - "isMut": true, - "isSigner": false + name: 'vaultInputTokenAAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultInputTokenBAccount", - "isMut": true, - "isSigner": false + name: 'vaultInputTokenBAccount', + isMut: true, + isSigner: false, }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + name: 'whirlpoolProgramId', + isMut: false, + isSigner: false, }, { - "name": "tokenVaultA", - "isMut": true, - "isSigner": false + name: 'tokenVaultA', + isMut: true, + isSigner: false, }, { - "name": "tokenVaultB", - "isMut": true, - "isSigner": false + name: 'tokenVaultB', + isMut: true, + isSigner: false, }, { - "name": "currentPosition", - "accounts": [ + name: 'currentPosition', + accounts: [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + name: 'whirlpool', + isMut: true, + isSigner: false, }, { - "name": "position", - "isMut": true, - "isSigner": false + name: 'position', + isMut: true, + isSigner: false, }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + name: 'positionTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + name: 'tickArrayLower', + isMut: true, + isSigner: false, }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false - } - ] + name: 'tickArrayUpper', + isMut: true, + isSigner: false, + }, + ], }, { - "name": "newPosition", - "accounts": [ + name: 'newPosition', + accounts: [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + name: 'whirlpool', + isMut: true, + isSigner: false, }, { - "name": "position", - "isMut": true, - "isSigner": false + name: 'position', + isMut: true, + isSigner: false, }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + name: 'positionTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + name: 'tickArrayLower', + isMut: true, + isSigner: false, }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false - } - ] + name: 'tickArrayUpper', + isMut: true, + isSigner: false, + }, + ], }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, ], - "args": [] + args: [], }, { - "name": "deposit", - "accounts": [ + name: 'deposit', + accounts: [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + name: 'userSigner', + isMut: false, + isSigner: true, }, { - "name": "vaultAccount", - "isMut": false, - "isSigner": false + name: 'vaultAccount', + isMut: false, + isSigner: false, }, { - "name": "vaultLpTokenMintPubkey", - "isMut": true, - "isSigner": false + name: 'vaultLpTokenMintPubkey', + isMut: true, + isSigner: false, }, { - "name": "vaultInputTokenAAccount", - "isMut": true, - "isSigner": false + name: 'vaultInputTokenAAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultInputTokenBAccount", - "isMut": true, - "isSigner": false + name: 'vaultInputTokenBAccount', + isMut: true, + isSigner: false, }, { - "name": "userLpTokenAccount", - "isMut": true, - "isSigner": false + name: 'userLpTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "userTokenAAccount", - "isMut": true, - "isSigner": false + name: 'userTokenAAccount', + isMut: true, + isSigner: false, }, { - "name": "userTokenBAccount", - "isMut": true, - "isSigner": false + name: 'userTokenBAccount', + isMut: true, + isSigner: false, }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + name: 'whirlpoolProgramId', + isMut: false, + isSigner: false, }, { - "name": "position", - "accounts": [ + name: 'position', + accounts: [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + name: 'whirlpool', + isMut: true, + isSigner: false, }, { - "name": "position", - "isMut": true, - "isSigner": false + name: 'position', + isMut: true, + isSigner: false, }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + name: 'positionTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + name: 'tickArrayLower', + isMut: true, + isSigner: false, }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false - } - ] + name: 'tickArrayUpper', + isMut: true, + isSigner: false, + }, + ], }, { - "name": "whTokenVaultA", - "isMut": true, - "isSigner": false + name: 'whTokenVaultA', + isMut: true, + isSigner: false, }, { - "name": "whTokenVaultB", - "isMut": true, - "isSigner": false + name: 'whTokenVaultB', + isMut: true, + isSigner: false, }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, ], - "args": [ + args: [ { - "name": "lpAmount", - "type": "u64" + name: 'lpAmount', + type: 'u64', }, { - "name": "maxAmountA", - "type": "u64" + name: 'maxAmountA', + type: 'u64', }, { - "name": "maxAmountB", - "type": "u64" - } - ] + name: 'maxAmountB', + type: 'u64', + }, + ], }, { - "name": "withdraw", - "accounts": [ + name: 'withdraw', + accounts: [ { - "name": "userSigner", - "isMut": false, - "isSigner": true + name: 'userSigner', + isMut: false, + isSigner: true, }, { - "name": "vaultAccount", - "isMut": false, - "isSigner": false + name: 'vaultAccount', + isMut: false, + isSigner: false, }, { - "name": "vaultLpTokenMintPubkey", - "isMut": true, - "isSigner": false + name: 'vaultLpTokenMintPubkey', + isMut: true, + isSigner: false, }, { - "name": "vaultInputTokenAAccount", - "isMut": true, - "isSigner": false + name: 'vaultInputTokenAAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultInputTokenBAccount", - "isMut": true, - "isSigner": false + name: 'vaultInputTokenBAccount', + isMut: true, + isSigner: false, }, { - "name": "userLpTokenAccount", - "isMut": true, - "isSigner": false + name: 'userLpTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "userTokenAAccount", - "isMut": true, - "isSigner": false + name: 'userTokenAAccount', + isMut: true, + isSigner: false, }, { - "name": "userTokenBAccount", - "isMut": true, - "isSigner": false + name: 'userTokenBAccount', + isMut: true, + isSigner: false, }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + name: 'whirlpoolProgramId', + isMut: false, + isSigner: false, }, { - "name": "position", - "accounts": [ + name: 'position', + accounts: [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + name: 'whirlpool', + isMut: true, + isSigner: false, }, { - "name": "position", - "isMut": true, - "isSigner": false + name: 'position', + isMut: true, + isSigner: false, }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + name: 'positionTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + name: 'tickArrayLower', + isMut: true, + isSigner: false, }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false - } - ] + name: 'tickArrayUpper', + isMut: true, + isSigner: false, + }, + ], }, { - "name": "whTokenVaultA", - "isMut": true, - "isSigner": false + name: 'whTokenVaultA', + isMut: true, + isSigner: false, }, { - "name": "whTokenVaultB", - "isMut": true, - "isSigner": false + name: 'whTokenVaultB', + isMut: true, + isSigner: false, }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, ], - "args": [ + args: [ { - "name": "lpAmount", - "type": "u64" + name: 'lpAmount', + type: 'u64', }, { - "name": "minAmountA", - "type": "u64" + name: 'minAmountA', + type: 'u64', }, { - "name": "minAmountB", - "type": "u64" - } - ] + name: 'minAmountB', + type: 'u64', + }, + ], }, { - "name": "collectFees", - "accounts": [ + name: 'collectFees', + accounts: [ { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + name: 'vaultAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultInputTokenAAccount", - "isMut": true, - "isSigner": false + name: 'vaultInputTokenAAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultInputTokenBAccount", - "isMut": true, - "isSigner": false + name: 'vaultInputTokenBAccount', + isMut: true, + isSigner: false, }, { - "name": "treasuryTokenAAccount", - "isMut": true, - "isSigner": false + name: 'treasuryTokenAAccount', + isMut: true, + isSigner: false, }, { - "name": "treasuryTokenBAccount", - "isMut": true, - "isSigner": false + name: 'treasuryTokenBAccount', + isMut: true, + isSigner: false, }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + name: 'whirlpoolProgramId', + isMut: false, + isSigner: false, }, { - "name": "tokenVaultA", - "isMut": true, - "isSigner": false + name: 'tokenVaultA', + isMut: true, + isSigner: false, }, { - "name": "tokenVaultB", - "isMut": true, - "isSigner": false + name: 'tokenVaultB', + isMut: true, + isSigner: false, }, { - "name": "position", - "accounts": [ + name: 'position', + accounts: [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + name: 'whirlpool', + isMut: true, + isSigner: false, }, { - "name": "position", - "isMut": true, - "isSigner": false + name: 'position', + isMut: true, + isSigner: false, }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + name: 'positionTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + name: 'tickArrayLower', + isMut: true, + isSigner: false, }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false - } - ] + name: 'tickArrayUpper', + isMut: true, + isSigner: false, + }, + ], }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, ], - "args": [] + args: [], }, { - "name": "collectRewards", - "accounts": [ + name: 'collectRewards', + accounts: [ { - "name": "vaultAccount", - "isMut": false, - "isSigner": false + name: 'vaultAccount', + isMut: false, + isSigner: false, }, { - "name": "vaultRewardsTokenAccount", - "isMut": true, - "isSigner": false + name: 'vaultRewardsTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "treasuryRewardsTokenAccount", - "isMut": true, - "isSigner": false + name: 'treasuryRewardsTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "rewardVault", - "isMut": true, - "isSigner": false + name: 'rewardVault', + isMut: true, + isSigner: false, }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + name: 'whirlpoolProgramId', + isMut: false, + isSigner: false, }, { - "name": "position", - "accounts": [ + name: 'position', + accounts: [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + name: 'whirlpool', + isMut: true, + isSigner: false, }, { - "name": "position", - "isMut": true, - "isSigner": false + name: 'position', + isMut: true, + isSigner: false, }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + name: 'positionTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + name: 'tickArrayLower', + isMut: true, + isSigner: false, }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false - } - ] + name: 'tickArrayUpper', + isMut: true, + isSigner: false, + }, + ], }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, ], - "args": [ + args: [ { - "name": "rewardIndex", - "type": "u8" - } - ] + name: 'rewardIndex', + type: 'u8', + }, + ], }, { - "name": "swapRewards", - "accounts": [ + name: 'swapRewards', + accounts: [ { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + name: 'vaultAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultRewardsTokenAccount", - "isMut": true, - "isSigner": false + name: 'vaultRewardsTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultDestinationTokenAccount", - "isMut": true, - "isSigner": false + name: 'vaultDestinationTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + name: 'tokenProgram', + isMut: false, + isSigner: false, }, { - "name": "swapProgram", - "isMut": false, - "isSigner": false - } + name: 'swapProgram', + isMut: false, + isSigner: false, + }, ], - "args": [] + args: [], }, { - "name": "transferRewards", - "accounts": [ + name: 'transferRewards', + accounts: [ { - "name": "vaultAccount", - "isMut": false, - "isSigner": false + name: 'vaultAccount', + isMut: false, + isSigner: false, }, { - "name": "vaultRewardsTokenAccount", - "isMut": true, - "isSigner": false + name: 'vaultRewardsTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "destinationTokenAccount", - "isMut": true, - "isSigner": false + name: 'destinationTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, ], - "args": [] + args: [], }, { - "name": "reinvest", - "accounts": [ + name: 'reinvest', + accounts: [ { - "name": "vaultAccount", - "isMut": true, - "isSigner": false + name: 'vaultAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultLpTokenMintPubkey", - "isMut": false, - "isSigner": false + name: 'vaultLpTokenMintPubkey', + isMut: false, + isSigner: false, }, { - "name": "whirlpoolProgramId", - "isMut": false, - "isSigner": false + name: 'whirlpoolProgramId', + isMut: false, + isSigner: false, }, { - "name": "vaultInputTokenAAccount", - "isMut": true, - "isSigner": false + name: 'vaultInputTokenAAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultInputTokenBAccount", - "isMut": true, - "isSigner": false + name: 'vaultInputTokenBAccount', + isMut: true, + isSigner: false, }, { - "name": "tokenVaultA", - "isMut": true, - "isSigner": false + name: 'tokenVaultA', + isMut: true, + isSigner: false, }, { - "name": "tokenVaultB", - "isMut": true, - "isSigner": false + name: 'tokenVaultB', + isMut: true, + isSigner: false, }, { - "name": "position", - "accounts": [ + name: 'position', + accounts: [ { - "name": "whirlpool", - "isMut": true, - "isSigner": false + name: 'whirlpool', + isMut: true, + isSigner: false, }, { - "name": "position", - "isMut": true, - "isSigner": false + name: 'position', + isMut: true, + isSigner: false, }, { - "name": "positionTokenAccount", - "isMut": true, - "isSigner": false + name: 'positionTokenAccount', + isMut: true, + isSigner: false, }, { - "name": "tickArrayLower", - "isMut": true, - "isSigner": false + name: 'tickArrayLower', + isMut: true, + isSigner: false, }, { - "name": "tickArrayUpper", - "isMut": true, - "isSigner": false - } - ] + name: 'tickArrayUpper', + isMut: true, + isSigner: false, + }, + ], }, { - "name": "tickArray0", - "isMut": true, - "isSigner": false + name: 'tickArray0', + isMut: true, + isSigner: false, }, { - "name": "tickArray1", - "isMut": true, - "isSigner": false + name: 'tickArray1', + isMut: true, + isSigner: false, }, { - "name": "tickArray2", - "isMut": true, - "isSigner": false + name: 'tickArray2', + isMut: true, + isSigner: false, }, { - "name": "oracle", - "isMut": true, - "isSigner": false + name: 'oracle', + isMut: true, + isSigner: false, }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } + name: 'tokenProgram', + isMut: false, + isSigner: false, + }, ], - "args": [] + args: [], }, { - "name": "setTokenMetadata", - "accounts": [ + name: 'setTokenMetadata', + accounts: [ { - "name": "metadataAccount", - "isMut": true, - "isSigner": false + name: 'metadataAccount', + isMut: true, + isSigner: false, }, { - "name": "vaultAccount", - "isMut": false, - "isSigner": false + name: 'vaultAccount', + isMut: false, + isSigner: false, }, { - "name": "vaultLpTokenMintPubkey", - "isMut": true, - "isSigner": false + name: 'vaultLpTokenMintPubkey', + isMut: true, + isSigner: false, }, { - "name": "userSigner", - "isMut": true, - "isSigner": true + name: 'userSigner', + isMut: true, + isSigner: true, }, { - "name": "tokenMetadataProgram", - "isMut": false, - "isSigner": false + name: 'tokenMetadataProgram', + isMut: false, + isSigner: false, }, { - "name": "associatedTokenProgram", - "isMut": false, - "isSigner": false + name: 'associatedTokenProgram', + isMut: false, + isSigner: false, }, { - "name": "systemProgram", - "isMut": false, - "isSigner": false + name: 'systemProgram', + isMut: false, + isSigner: false, }, { - "name": "tokenProgram", - "isMut": false, - "isSigner": false + name: 'tokenProgram', + isMut: false, + isSigner: false, }, { - "name": "rent", - "isMut": false, - "isSigner": false - } + name: 'rent', + isMut: false, + isSigner: false, + }, ], - "args": [ + args: [ { - "name": "tokenName", - "type": "string" + name: 'tokenName', + type: 'string', }, { - "name": "tokenSymbol", - "type": "string" + name: 'tokenSymbol', + type: 'string', }, { - "name": "tokenUri", - "type": "string" + name: 'tokenUri', + type: 'string', }, { - "name": "firstTime", - "type": "bool" - } - ] - } + name: 'firstTime', + type: 'bool', + }, + ], + }, ], - "accounts": [ + accounts: [ { - "name": "vaultAccount", - "docs": [ - "Strategy vault account" + name: 'vaultAccount', + docs: [ + 'Strategy vault account', ], - "type": { - "kind": "struct", - "fields": [ + type: { + kind: 'struct', + fields: [ { - "name": "version", - "docs": [ - "Vault version" + name: 'version', + docs: [ + 'Vault version', ], - "type": "u8" + type: 'u8', }, { - "name": "isActiveFromUi", - "docs": [ - "The vault is active from the UI" + name: 'isActiveFromUi', + docs: [ + 'The vault is active from the UI', ], - "type": "bool" + type: 'bool', }, { - "name": "isPaused", - "docs": [ - "The smart contract is paused for this vault" + name: 'isPaused', + docs: [ + 'The smart contract is paused for this vault', ], - "type": "bool" + type: 'bool', }, { - "name": "id", - "docs": [ - "Vault number for a given whirlpool" + name: 'id', + docs: [ + 'Vault number for a given whirlpool', ], - "type": "u8" + type: 'u8', }, { - "name": "bumps", - "docs": [ - "PDA bump seeds" + name: 'bumps', + docs: [ + 'PDA bump seeds', ], - "type": { - "defined": "Bumps" - } + type: { + defined: 'Bumps', + }, }, { - "name": "whirlpoolId", - "docs": [ - "Whirlpool pubkey" + name: 'whirlpoolId', + docs: [ + 'Whirlpool pubkey', ], - "type": "publicKey" + type: 'publicKey', }, { - "name": "inputTokenAMintPubkey", - "docs": [ - "Pool input token_a mint address" + name: 'inputTokenAMintPubkey', + docs: [ + 'Pool input token_a mint address', ], - "type": "publicKey" + type: 'publicKey', }, { - "name": "inputTokenBMintPubkey", - "docs": [ - "Pool input token_b mint address" + name: 'inputTokenBMintPubkey', + docs: [ + 'Pool input token_b mint address', ], - "type": "publicKey" + type: 'publicKey', }, { - "name": "fee", - "docs": [ - "Fee percentage using FEE_SCALE. Fee applied on earnings" + name: 'fee', + docs: [ + 'Fee percentage using FEE_SCALE. Fee applied on earnings', ], - "type": "u64" + type: 'u64', }, { - "name": "minSlotsForReinvest", - "docs": [ - "Minimum number of elapsed slots required for reinvesting" + name: 'minSlotsForReinvest', + docs: [ + 'Minimum number of elapsed slots required for reinvesting', ], - "type": "u64" + type: 'u64', }, { - "name": "lastReinvestmentSlot", - "docs": [ - "Last reinvestment slot" + name: 'lastReinvestmentSlot', + docs: [ + 'Last reinvestment slot', ], - "type": "u64" + type: 'u64', }, { - "name": "lastLiquidityIncrease", - "docs": [ - "Last reinvestment liquidity increase" + name: 'lastLiquidityIncrease', + docs: [ + 'Last reinvestment liquidity increase', ], - "type": "u128" + type: 'u128', }, { - "name": "earnedRewardsTokenA", - "docs": [ - "Total rewards earned by the vault" + name: 'earnedRewardsTokenA', + docs: [ + 'Total rewards earned by the vault', ], - "type": "u64" + type: 'u64', }, { - "name": "earnedRewardsTokenB", - "type": "u64" + name: 'earnedRewardsTokenB', + type: 'u64', }, { - "name": "marketRewards", - "docs": [ - "The market where to sell the rewards" + name: 'marketRewards', + docs: [ + 'The market where to sell the rewards', ], - "type": { - "array": [ + type: { + array: [ { - "defined": "MarketRewardsInfo" + defined: 'MarketRewardsInfo', }, - 3 - ] - } + 3, + ], + }, }, { - "name": "positions", - "docs": [ - "Information about the opened positions (max = MAX_POSITIONS)" + name: 'positions', + docs: [ + 'Information about the opened positions (max = MAX_POSITIONS)', ], - "type": { - "vec": { - "defined": "PositionInfo" - } - } + type: { + vec: { + defined: 'PositionInfo', + }, + }, }, { - "name": "padding", - "docs": [ - "Additional padding" + name: 'padding', + docs: [ + 'Additional padding', ], - "type": { - "array": [ - "u64", - 10 - ] - } - } - ] - } - } + type: { + array: [ + 'u64', + 10, + ], + }, + }, + ], + }, + }, ], - "types": [ + types: [ { - "name": "MarketRewardsInfoInput", - "type": { - "kind": "struct", - "fields": [ + name: 'MarketRewardsInfoInput', + type: { + kind: 'struct', + fields: [ { - "name": "id", - "docs": [ - "Id of market associated" + name: 'id', + docs: [ + 'Id of market associated', ], - "type": { - "defined": "MarketRewards" - } + type: { + defined: 'MarketRewards', + }, }, { - "name": "minAmountOut", - "docs": [ - "Minimum number of lamports to receive during swap" + name: 'minAmountOut', + docs: [ + 'Minimum number of lamports to receive during swap', ], - "type": "u64" - } - ] - } + type: 'u64', + }, + ], + }, }, { - "name": "Bumps", - "docs": [ - "PDA bump seeds" + name: 'Bumps', + docs: [ + 'PDA bump seeds', ], - "type": { - "kind": "struct", - "fields": [ + type: { + kind: 'struct', + fields: [ { - "name": "vault", - "type": "u8" + name: 'vault', + type: 'u8', }, { - "name": "lpTokenMint", - "type": "u8" - } - ] - } + name: 'lpTokenMint', + type: 'u8', + }, + ], + }, }, { - "name": "PositionInfo", - "docs": [ - "Position information" + name: 'PositionInfo', + docs: [ + 'Position information', ], - "type": { - "kind": "struct", - "fields": [ + type: { + kind: 'struct', + fields: [ { - "name": "pubkey", - "docs": [ - "Position pubkey" + name: 'pubkey', + docs: [ + 'Position pubkey', ], - "type": "publicKey" + type: 'publicKey', }, { - "name": "lowerTick", - "docs": [ - "Position lower tick" + name: 'lowerTick', + docs: [ + 'Position lower tick', ], - "type": "i32" + type: 'i32', }, { - "name": "upperTick", - "docs": [ - "Position upper tick" + name: 'upperTick', + docs: [ + 'Position upper tick', ], - "type": "i32" - } - ] - } + type: 'i32', + }, + ], + }, }, { - "name": "MarketRewardsInfo", - "type": { - "kind": "struct", - "fields": [ + name: 'MarketRewardsInfo', + type: { + kind: 'struct', + fields: [ { - "name": "id", - "docs": [ - "Id of market associated" + name: 'id', + docs: [ + 'Id of market associated', ], - "type": { - "defined": "MarketRewards" - } + type: { + defined: 'MarketRewards', + }, }, { - "name": "rewardsMint", - "docs": [ - "Pubkey of the rewards token mint" + name: 'rewardsMint', + docs: [ + 'Pubkey of the rewards token mint', ], - "type": "publicKey" + type: 'publicKey', }, { - "name": "destinationTokenAccount", - "docs": [ - "Destination account" + name: 'destinationTokenAccount', + docs: [ + 'Destination account', ], - "type": "publicKey" + type: 'publicKey', }, { - "name": "minAmountOut", - "docs": [ - "Minimum number of lamports to receive during swap" + name: 'minAmountOut', + docs: [ + 'Minimum number of lamports to receive during swap', ], - "type": "u64" - } - ] - } + type: 'u64', + }, + ], + }, }, { - "name": "MarketRewards", - "type": { - "kind": "enum", - "variants": [ + name: 'MarketRewards', + type: { + kind: 'enum', + variants: [ { - "name": "NotSet" + name: 'NotSet', }, { - "name": "Transfer" + name: 'Transfer', }, { - "name": "OrcaV2" + name: 'OrcaV2', }, { - "name": "Whirlpool" - } - ] - } - } + name: 'Whirlpool', + }, + ], + }, + }, ], - "events": [ + events: [ { - "name": "CollectFeesEvent", - "fields": [ + name: 'CollectFeesEvent', + fields: [ { - "name": "vaultAccount", - "type": "publicKey", - "index": false + name: 'vaultAccount', + type: 'publicKey', + index: false, }, { - "name": "totalFeesTokenA", - "type": "u64", - "index": false + name: 'totalFeesTokenA', + type: 'u64', + index: false, }, { - "name": "totalFeesTokenB", - "type": "u64", - "index": false + name: 'totalFeesTokenB', + type: 'u64', + index: false, }, { - "name": "treasuryFeeTokenA", - "type": "u64", - "index": false + name: 'treasuryFeeTokenA', + type: 'u64', + index: false, }, { - "name": "treasuryFeeTokenB", - "type": "u64", - "index": false - } - ] + name: 'treasuryFeeTokenB', + type: 'u64', + index: false, + }, + ], }, { - "name": "CollectRewardsEvent", - "fields": [ + name: 'CollectRewardsEvent', + fields: [ { - "name": "vaultAccount", - "type": "publicKey", - "index": false + name: 'vaultAccount', + type: 'publicKey', + index: false, }, { - "name": "totalRewards", - "type": "u64", - "index": false + name: 'totalRewards', + type: 'u64', + index: false, }, { - "name": "treasuryFee", - "type": "u64", - "index": false - } - ] + name: 'treasuryFee', + type: 'u64', + index: false, + }, + ], }, { - "name": "DepositWithdrawEvent", - "fields": [ + name: 'DepositWithdrawEvent', + fields: [ { - "name": "vaultAccount", - "type": "publicKey", - "index": false + name: 'vaultAccount', + type: 'publicKey', + index: false, }, { - "name": "amountA", - "type": "u64", - "index": false + name: 'amountA', + type: 'u64', + index: false, }, { - "name": "amountB", - "type": "u64", - "index": false + name: 'amountB', + type: 'u64', + index: false, }, { - "name": "liquidity", - "type": "u128", - "index": false - } - ] + name: 'liquidity', + type: 'u128', + index: false, + }, + ], }, { - "name": "RebalanceEvent", - "fields": [ + name: 'RebalanceEvent', + fields: [ { - "name": "vaultAccount", - "type": "publicKey", - "index": false + name: 'vaultAccount', + type: 'publicKey', + index: false, }, { - "name": "oldLiquidity", - "type": "u128", - "index": false + name: 'oldLiquidity', + type: 'u128', + index: false, }, { - "name": "newLiquidity", - "type": "u128", - "index": false - } - ] + name: 'newLiquidity', + type: 'u128', + index: false, + }, + ], }, { - "name": "ReinvestEvent", - "fields": [ + name: 'ReinvestEvent', + fields: [ { - "name": "vaultAccount", - "type": "publicKey", - "index": false + name: 'vaultAccount', + type: 'publicKey', + index: false, }, { - "name": "lpSupply", - "type": "u64", - "index": false + name: 'lpSupply', + type: 'u64', + index: false, }, { - "name": "liquidity", - "type": "u128", - "index": false + name: 'liquidity', + type: 'u128', + index: false, }, { - "name": "liquidityIncrease", - "type": "u128", - "index": false + name: 'liquidityIncrease', + type: 'u128', + index: false, }, { - "name": "elapsedSlots", - "type": "u64", - "index": false - } - ] + name: 'elapsedSlots', + type: 'u64', + index: false, + }, + ], }, { - "name": "SwapEvent", - "fields": [ + name: 'SwapEvent', + fields: [ { - "name": "vaultAccount", - "type": "publicKey", - "index": false + name: 'vaultAccount', + type: 'publicKey', + index: false, }, { - "name": "mintIn", - "type": "publicKey", - "index": false + name: 'mintIn', + type: 'publicKey', + index: false, }, { - "name": "amountIn", - "type": "u64", - "index": false + name: 'amountIn', + type: 'u64', + index: false, }, { - "name": "mintOut", - "type": "publicKey", - "index": false + name: 'mintOut', + type: 'publicKey', + index: false, }, { - "name": "amountOut", - "type": "u64", - "index": false - } - ] - } + name: 'amountOut', + type: 'u64', + index: false, + }, + ], + }, ], - "errors": [ + errors: [ { - "code": 6000, - "name": "MathOverflowAdd", - "msg": "Math overflow during add" + code: 6000, + name: 'MathOverflowAdd', + msg: 'Math overflow during add', }, { - "code": 6001, - "name": "MathOverflowSub", - "msg": "Math overflow during sub" + code: 6001, + name: 'MathOverflowSub', + msg: 'Math overflow during sub', }, { - "code": 6002, - "name": "MathOverflowMul", - "msg": "Math overflow during mul" + code: 6002, + name: 'MathOverflowMul', + msg: 'Math overflow during mul', }, { - "code": 6003, - "name": "MathZeroDivision", - "msg": "Math division by zero" + code: 6003, + name: 'MathZeroDivision', + msg: 'Math division by zero', }, { - "code": 6004, - "name": "MathOverflowConversion", - "msg": "Math overflow during type conversion" + code: 6004, + name: 'MathOverflowConversion', + msg: 'Math overflow during type conversion', }, { - "code": 6005, - "name": "InvalidVaultVersion", - "msg": "Invalid vault version" + code: 6005, + name: 'InvalidVaultVersion', + msg: 'Invalid vault version', }, { - "code": 6006, - "name": "UnauthorizedUser", - "msg": "Unauthorized user" + code: 6006, + name: 'UnauthorizedUser', + msg: 'Unauthorized user', }, { - "code": 6007, - "name": "PausedSmartContract", - "msg": "The smart contract is paused" + code: 6007, + name: 'PausedSmartContract', + msg: 'The smart contract is paused', }, { - "code": 6008, - "name": "PausedVault", - "msg": "The provided vault is paused" + code: 6008, + name: 'PausedVault', + msg: 'The provided vault is paused', }, { - "code": 6009, - "name": "NotEnoughSlots", - "msg": "Not enough elapsed slots since last call" + code: 6009, + name: 'NotEnoughSlots', + msg: 'Not enough elapsed slots since last call', }, { - "code": 6010, - "name": "InvalidFee", - "msg": "Fee cannot exceed FEE_SCALE" + code: 6010, + name: 'InvalidFee', + msg: 'Fee cannot exceed FEE_SCALE', }, { - "code": 6011, - "name": "MarketInvalidDestination", - "msg": "Market rewards input invalid destination account mint" + code: 6011, + name: 'MarketInvalidDestination', + msg: 'Market rewards input invalid destination account mint', }, { - "code": 6012, - "name": "MarketInvalidMint", - "msg": "Market rewards input tokens not allowed" + code: 6012, + name: 'MarketInvalidMint', + msg: 'Market rewards input tokens not allowed', }, { - "code": 6013, - "name": "MarketInvalidZeroAmount", - "msg": "Market rewards input zero min_amount_out not allowed" + code: 6013, + name: 'MarketInvalidZeroAmount', + msg: 'Market rewards input zero min_amount_out not allowed', }, { - "code": 6014, - "name": "ZeroLpAmount", - "msg": "LP amount must be greater than zero" + code: 6014, + name: 'ZeroLpAmount', + msg: 'LP amount must be greater than zero', }, { - "code": 6015, - "name": "ExceededTokenMax", - "msg": "Exceeded token max" + code: 6015, + name: 'ExceededTokenMax', + msg: 'Exceeded token max', }, { - "code": 6016, - "name": "InvalidDestinationAccount", - "msg": "Invalid destination token account" + code: 6016, + name: 'InvalidDestinationAccount', + msg: 'Invalid destination token account', }, { - "code": 6017, - "name": "InvalidInputMint", - "msg": "Invalid input token mint pubkey" + code: 6017, + name: 'InvalidInputMint', + msg: 'Invalid input token mint pubkey', }, { - "code": 6018, - "name": "InvalidRewardMint", - "msg": "Invalid reward token mint pubkey" + code: 6018, + name: 'InvalidRewardMint', + msg: 'Invalid reward token mint pubkey', }, { - "code": 6019, - "name": "PositionAlreadyOpened", - "msg": "Position already opened" + code: 6019, + name: 'PositionAlreadyOpened', + msg: 'Position already opened', }, { - "code": 6020, - "name": "PositionLimitReached", - "msg": "Position limit reached" + code: 6020, + name: 'PositionLimitReached', + msg: 'Position limit reached', }, { - "code": 6021, - "name": "PositionNotActive", - "msg": "Position is not active" + code: 6021, + name: 'PositionNotActive', + msg: 'Position is not active', }, { - "code": 6022, - "name": "PositionNonExistence", - "msg": "Position does not exist" + code: 6022, + name: 'PositionNonExistence', + msg: 'Position does not exist', }, { - "code": 6023, - "name": "NotEnoughFees", - "msg": "Not enough fees generated yet" + code: 6023, + name: 'NotEnoughFees', + msg: 'Not enough fees generated yet', }, { - "code": 6024, - "name": "NotEnoughRewards", - "msg": "Not enough rewards generated yet" + code: 6024, + name: 'NotEnoughRewards', + msg: 'Not enough rewards generated yet', }, { - "code": 6025, - "name": "InvalidNumberOfAccounts", - "msg": "Invalid number of accounts" + code: 6025, + name: 'InvalidNumberOfAccounts', + msg: 'Invalid number of accounts', }, { - "code": 6026, - "name": "SwapNotSet", - "msg": "Swap is not set for the current rewards" + code: 6026, + name: 'SwapNotSet', + msg: 'Swap is not set for the current rewards', }, { - "code": 6027, - "name": "SwapInvalidProgramId", - "msg": "Invalid swap program ID" + code: 6027, + name: 'SwapInvalidProgramId', + msg: 'Invalid swap program ID', }, { - "code": 6028, - "name": "TransferNotSet", - "msg": "Transfer is not set for the current rewards" + code: 6028, + name: 'TransferNotSet', + msg: 'Transfer is not set for the current rewards', }, { - "code": 6029, - "name": "WhirlpoolLiquidityTooHigh", - "msg": "whirlpool_cpi: Liquidity amount must be less than i64::MAX" + code: 6029, + name: 'WhirlpoolLiquidityTooHigh', + msg: 'whirlpool_cpi: Liquidity amount must be less than i64::MAX', }, { - "code": 6030, - "name": "WhirlpoolLiquidityToDeltasOverflow", - "msg": "whirlpool_cpi: Overflow while computing liquidity to token deltas" - } - ] + code: 6030, + name: 'WhirlpoolLiquidityToDeltasOverflow', + msg: 'whirlpool_cpi: Overflow while computing liquidity to token deltas', + }, + ], }; diff --git a/liquidator/src/libs/unwrap/nazare/unwrapNazareLp.ts b/liquidator/src/libs/unwrap/nazare/unwrapNazareLp.ts index db76485a..6b849101 100644 --- a/liquidator/src/libs/unwrap/nazare/unwrapNazareLp.ts +++ b/liquidator/src/libs/unwrap/nazare/unwrapNazareLp.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable no-restricted-syntax */ import { Account, Connection, PublicKey, Transaction, diff --git a/liquidator/src/libs/unwrap/unwrapToken.spec.ts b/liquidator/src/libs/unwrap/unwrapToken.spec.ts index d1ff244b..a52be903 100644 --- a/liquidator/src/libs/unwrap/unwrapToken.spec.ts +++ b/liquidator/src/libs/unwrap/unwrapToken.spec.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ import { Account, Connection,