Helper class to interact with a Position account and build complex transactions.

interface Position {
    collectFees: ((updateFeesAndRewards?: boolean, ownerTokenAccountMap?: Partial<Record<string, Address>>, destinationWallet?: Address, positionWallet?: Address, ataPayer?: Address, opts?: SimpleAccountFetchOptions) => Promise<TransactionBuilder>);
    collectRewards: ((rewardsToCollect?: Address[], updateFeesAndRewards?: boolean, ownerTokenAccountMap?: Partial<Record<string, Address>>, destinationWallet?: Address, positionWallet?: Address, ataPayer?: Address, opts?: SimpleAccountFetchOptions) => Promise<TransactionBuilder[]>);
    decreaseLiquidity: ((liquidityInput: DecreaseLiquidityInput, resolveATA?: boolean, destinationWallet?: Address, positionWallet?: Address, ataPayer?: Address) => Promise<TransactionBuilder>);
    getAddress: (() => PublicKey);
    getData: (() => PositionData);
    getLowerTickData: (() => TickData);
    getPositionMintTokenProgramId: (() => PublicKey);
    getUpperTickData: (() => TickData);
    getWhirlpoolData: (() => WhirlpoolData);
    increaseLiquidity: ((liquidityInput: IncreaseLiquidityInput, resolveATA?: boolean, wallet?: Address, positionWallet?: Address, ataPayer?: Address) => Promise<TransactionBuilder>);
    refreshData: (() => Promise<PositionData>);
}

Implemented by

Properties

collectFees: ((updateFeesAndRewards?: boolean, ownerTokenAccountMap?: Partial<Record<string, Address>>, destinationWallet?: Address, positionWallet?: Address, ataPayer?: Address, opts?: SimpleAccountFetchOptions) => Promise<TransactionBuilder>)

Collect fees from this position

If positionWallet is provided, the wallet owners have to sign this transaction.

Type declaration

    • (updateFeesAndRewards?, ownerTokenAccountMap?, destinationWallet?, positionWallet?, ataPayer?, opts?): Promise<TransactionBuilder>
    • Parameters

      • OptionalupdateFeesAndRewards: boolean

        if true, add instructions to refresh the accumulated fees and rewards data (default to true unless you know that the collect fees quote and on-chain data match for the "feeOwedA" and "feeOwedB" fields in the Position account)

      • OptionalownerTokenAccountMap: Partial<Record<string, Address>>

        A record that maps a given mint to the owner's token account for that mint (if an entry doesn't exist, it will be automatically resolved)

      • OptionaldestinationWallet: Address

        the wallet to deposit tokens into when withdrawing from the position. If null, the WhirlpoolContext wallet is used.

      • OptionalpositionWallet: Address

        the wallet to that houses the position token. If null, the WhirlpoolContext wallet is used.

      • OptionalataPayer: Address

        wallet that will fund the creation of the new associated token accounts

      • Optionalopts: SimpleAccountFetchOptions

        an options object to define fetch and cache options when accessing on-chain accounts

      Returns Promise<TransactionBuilder>

      the transaction that will collect fees from the position

collectRewards: ((rewardsToCollect?: Address[], updateFeesAndRewards?: boolean, ownerTokenAccountMap?: Partial<Record<string, Address>>, destinationWallet?: Address, positionWallet?: Address, ataPayer?: Address, opts?: SimpleAccountFetchOptions) => Promise<TransactionBuilder[]>)

Collect rewards from this position

If positionWallet is provided, the wallet owners have to sign this transaction.

Type declaration

    • (rewardsToCollect?, updateFeesAndRewards?, ownerTokenAccountMap?, destinationWallet?, positionWallet?, ataPayer?, opts?): Promise<TransactionBuilder[]>
    • Parameters

      • OptionalrewardsToCollect: Address[]

        reward mints to collect (omitting this parameter means all rewards will be collected)

      • OptionalupdateFeesAndRewards: boolean

        if true, add instructions to refresh the accumulated fees and rewards data (default to true unless you know that the collect fees quote and on-chain data match for the "feeOwedA" and "feeOwedB" fields in the Position account)

      • OptionalownerTokenAccountMap: Partial<Record<string, Address>>

        A record that maps a given mint to the owner's token account for that mint (if an entry doesn't exist, it will be automatically resolved)

      • OptionaldestinationWallet: Address

        the wallet to deposit tokens into when withdrawing from the position. If null, the WhirlpoolContext wallet is used.

      • OptionalpositionWallet: Address

        the wallet to that houses the position token. If null, the WhirlpoolContext wallet is used.

      • OptionalataPayer: Address

        wallet that will fund the creation of the new associated token accounts

      • Optionalopts: SimpleAccountFetchOptions

        an options object to define fetch and cache options when accessing on-chain accounts

      Returns Promise<TransactionBuilder[]>

      the transactions that will collect rewards from the position. The transactions must be executed serially.

decreaseLiquidity: ((liquidityInput: DecreaseLiquidityInput, resolveATA?: boolean, destinationWallet?: Address, positionWallet?: Address, ataPayer?: Address) => Promise<TransactionBuilder>)

Withdraw liquidity from this position.

If positionWallet is provided, the wallet owners have to sign this transaction.

Type declaration

    • (liquidityInput, resolveATA?, destinationWallet?, positionWallet?, ataPayer?): Promise<TransactionBuilder>
    • Parameters

      • liquidityInput: DecreaseLiquidityInput

        input that defines the desired liquidity amount and minimum tokens willing to be to withdrawn from the position.

      • OptionalresolveATA: boolean

        if true, add instructions to create associated token accounts for tokenA,B for the destinationWallet if necessary. (RPC call required)

      • OptionaldestinationWallet: Address

        the wallet to deposit tokens into when withdrawing from the position. If null, the WhirlpoolContext wallet is used.

      • OptionalpositionWallet: Address

        the wallet to that houses the position token. If null, the WhirlpoolContext wallet is used.

      • OptionalataPayer: Address

        wallet that will fund the creation of the new associated token accounts

      Returns Promise<TransactionBuilder>

      the transaction that will deposit the tokens into the position when executed.

getAddress: (() => PublicKey)

Return the address for this Whirlpool instance.

Type declaration

    • (): PublicKey
    • Returns PublicKey

      the PublicKey for this Whirlpool instance.

getData: (() => PositionData)

Return the most recently fetched Position account data.

Type declaration

getLowerTickData: (() => TickData)

Return the most recently fetched TickData account data for this position's lower tick.

Type declaration

    • (): TickData
    • Returns TickData

      most recently fetched TickData for this position's lower tick.

getPositionMintTokenProgramId: (() => PublicKey)

Return the program address owning the position token.

Type declaration

    • (): PublicKey
    • Returns PublicKey

      the PublicKey for the program address owning the position token.

getUpperTickData: (() => TickData)

Return the most recently fetched TickData account data for this position's upper tick.

Type declaration

    • (): TickData
    • Returns TickData

      most recently fetched TickData for this position's upper tick.

getWhirlpoolData: (() => WhirlpoolData)

Return the most recently fetched Whirlpool account data for this position.

Type declaration

increaseLiquidity: ((liquidityInput: IncreaseLiquidityInput, resolveATA?: boolean, wallet?: Address, positionWallet?: Address, ataPayer?: Address) => Promise<TransactionBuilder>)

Deposit additional tokens into this postiion. The wallet must contain the position token and the necessary token A & B to complete the deposit. If positionWallet and wallet is provided, the wallet owners have to sign this transaction.

Type declaration

    • (liquidityInput, resolveATA?, wallet?, positionWallet?, ataPayer?): Promise<TransactionBuilder>
    • Parameters

      • liquidityInput: IncreaseLiquidityInput

        input that defines the desired liquidity amount and maximum tokens willing to be to deposited.

      • OptionalresolveATA: boolean

        if true, add instructions to create associated token accounts for tokenA,B for the destinationWallet if necessary. (RPC call required)

      • Optionalwallet: Address

        to withdraw tokens to deposit into the position. If null, the WhirlpoolContext wallet is used.

      • OptionalpositionWallet: Address

        the wallet to that houses the position token. If null, the WhirlpoolContext wallet is used.

      • OptionalataPayer: Address

        wallet that will fund the creation of the new associated token accounts

      Returns Promise<TransactionBuilder>

      the transaction that will deposit the tokens into the position when executed.

refreshData: (() => Promise<PositionData>)

Fetch and return the most recently fetched Position account data.

Type declaration