UNPKG

@kamino-finance/kliquidity-sdk

Version:

Typescript SDK for interacting with the Kamino Liquidity (kliquidity) protocol

109 lines (98 loc) 3.29 kB
import { address, Address } from "@solana/kit" // eslint-disable-line @typescript-eslint/no-unused-vars import BN from "bn.js" // eslint-disable-line @typescript-eslint/no-unused-vars import * as types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars import * as borsh from "@coral-xyz/borsh" import { borshAddress } from "../utils" export interface TickFields { initialized: boolean liquidityNet: BN liquidityGross: BN feeGrowthOutsideA: BN feeGrowthOutsideB: BN rewardGrowthsOutside: Array<BN> } export interface TickJSON { initialized: boolean liquidityNet: string liquidityGross: string feeGrowthOutsideA: string feeGrowthOutsideB: string rewardGrowthsOutside: Array<string> } export class Tick { readonly initialized: boolean readonly liquidityNet: BN readonly liquidityGross: BN readonly feeGrowthOutsideA: BN readonly feeGrowthOutsideB: BN readonly rewardGrowthsOutside: Array<BN> constructor(fields: TickFields) { this.initialized = fields.initialized this.liquidityNet = fields.liquidityNet this.liquidityGross = fields.liquidityGross this.feeGrowthOutsideA = fields.feeGrowthOutsideA this.feeGrowthOutsideB = fields.feeGrowthOutsideB this.rewardGrowthsOutside = fields.rewardGrowthsOutside } static layout(property?: string) { return borsh.struct( [ borsh.bool("initialized"), borsh.i128("liquidityNet"), borsh.u128("liquidityGross"), borsh.u128("feeGrowthOutsideA"), borsh.u128("feeGrowthOutsideB"), borsh.array(borsh.u128(), 3, "rewardGrowthsOutside"), ], property ) } // eslint-disable-next-line @typescript-eslint/no-explicit-any static fromDecoded(obj: any) { return new Tick({ initialized: obj.initialized, liquidityNet: obj.liquidityNet, liquidityGross: obj.liquidityGross, feeGrowthOutsideA: obj.feeGrowthOutsideA, feeGrowthOutsideB: obj.feeGrowthOutsideB, rewardGrowthsOutside: obj.rewardGrowthsOutside, }) } static toEncodable(fields: TickFields) { return { initialized: fields.initialized, liquidityNet: fields.liquidityNet, liquidityGross: fields.liquidityGross, feeGrowthOutsideA: fields.feeGrowthOutsideA, feeGrowthOutsideB: fields.feeGrowthOutsideB, rewardGrowthsOutside: fields.rewardGrowthsOutside, } } toJSON(): TickJSON { return { initialized: this.initialized, liquidityNet: this.liquidityNet.toString(), liquidityGross: this.liquidityGross.toString(), feeGrowthOutsideA: this.feeGrowthOutsideA.toString(), feeGrowthOutsideB: this.feeGrowthOutsideB.toString(), rewardGrowthsOutside: this.rewardGrowthsOutside.map((item) => item.toString() ), } } static fromJSON(obj: TickJSON): Tick { return new Tick({ initialized: obj.initialized, liquidityNet: new BN(obj.liquidityNet), liquidityGross: new BN(obj.liquidityGross), feeGrowthOutsideA: new BN(obj.feeGrowthOutsideA), feeGrowthOutsideB: new BN(obj.feeGrowthOutsideB), rewardGrowthsOutside: obj.rewardGrowthsOutside.map( (item) => new BN(item) ), }) } toEncodable() { return Tick.toEncodable(this) } }