pinocchio-raydium-locking-program

Crates.iopinocchio-raydium-locking-program
lib.rspinocchio-raydium-locking-program
version0.1.4
created_at2025-07-12 05:12:37.127422+00
updated_at2025-07-15 00:52:41.095226+00
descriptionPinocchio helpers to invoke Raydium Locking IXs
homepagehttps://github.com/belivenn/pinocchio-raydium-locking-cpi
repositoryhttps://github.com/belivenn/pinocchio-raydium-locking-cpi
max_upload_size
id1748995
size30,876
Johnny (belivenn)

documentation

README

pinocchio-raydium-locking-program

Pinocchio helpers to invoke Raydium Locking Instructions (IXs) for both CP (Constant Product) and CLMM (Concentrated Liquidity) pools.

Features

  • Lock CP Liquidity: Lock constant product pool liquidity with optional metadata
  • Collect CP Fees: Collect fees and rewards from locked CP positions
  • Lock CLMM Position: Lock concentrated liquidity positions with optional metadata
  • Collect CLMM Fees: Collect fees and rewards from locked CLMM positions

Installation

Add this to your Cargo.toml:

[dependencies]
pinocchio-raydium-locking-program = "0.1.4"

Usage

Lock CP Liquidity

use pinocchio_raydium_locking_program::instructions::LockCpLiquidity;

let lock_ix = LockCpLiquidity {
    authority: &authority_account,
    payer: &payer_account,
    liquidity_owner: &liquidity_owner_account,
    fee_nft_owner: &fee_nft_owner_account,
    fee_nft_mint: &fee_nft_mint_account,
    fee_nft_account: &fee_nft_account,
    pool_state: &pool_state_account,
    locked_liquidity: &locked_liquidity_account,
    lp_mint: &lp_mint_account,
    liquidity_owner_lp: &liquidity_owner_lp_account,
    locked_lp_vault: &locked_lp_vault_account,
    token_0_vault: &token_0_vault_account,
    token_1_vault: &token_1_vault_account,
    metadata_account: &metadata_account,
    rent: &rent_account,
    system_program: &system_program_account,
    token_program: &token_program_account,
    associated_token_program: &associated_token_program_account,
    metadata_program: &metadata_program_account,
    lp_amount: 1000000,
    with_metadata: true,
};

lock_ix.invoke()?;

Collect CP Fees

use pinocchio_raydium_locking_program::instructions::CollectCpFee;

let collect_ix = CollectCpFee {
    authority: &authority_account,
    fee_nft_owner: &fee_nft_owner_account,
    fee_nft_account: &fee_nft_account,
    locked_liquidity: &locked_liquidity_account,
    cpmm_program: &cpmm_program_account,
    cp_authority: &cp_authority_account,
    pool_state: &pool_state_account,
    lp_mint: &lp_mint_account,
    recipient_token_0_account: &recipient_token_0_account,
    recipient_token_1_account: &recipient_token_1_account,
    token_0_vault: &token_0_vault_account,
    token_1_vault: &token_1_vault_account,
    vault_0_mint: &vault_0_mint_account,
    vault_1_mint: &vault_1_mint_account,
    locked_lp_vault: &locked_lp_vault_account,
    token_program: &token_program_account,
    token_program_2022: &token_program_2022_account,
    memo_program: &memo_program_account,
    fee_lp_amount: 500000,
};

collect_ix.invoke()?;

Lock CLMM Position

use pinocchio_raydium_locking_program::instructions::LockClmmPosition;

let lock_ix = LockClmmPosition {
    authority: &authority_account,
    payer: &payer_account,
    position_nft_owner: &position_nft_owner_account,
    fee_nft_owner: &fee_nft_owner_account,
    position_nft_account: &position_nft_account,
    personal_position: &personal_position_account,
    position_nft_mint: &position_nft_mint_account,
    locked_nft_account: &locked_nft_account,
    locked_position: &locked_position_account,
    fee_nft_mint: &fee_nft_mint_account,
    fee_nft_account: &fee_nft_account,
    metadata_account: &metadata_account,
    metadata_program: &metadata_program_account,
    associated_token_program: &associated_token_program_account,
    rent: &rent_account,
    fee_nft_token_program: &fee_nft_token_program_account,
    locked_nft_token_program: &locked_nft_token_program_account,
    system_program: &system_program_account,
    with_metadata: true,
};

lock_ix.invoke()?;

Collect CLMM Fees

use pinocchio_raydium_locking_program::instructions::CollectClmmFeeAndReward;

let collect_ix = CollectClmmFeeAndReward {
    authority: &authority_account,
    fee_nft_owner: &fee_nft_owner_account,
    fee_nft_account: &fee_nft_account,
    locked_position: &locked_position_account,
    clmm_program: &clmm_program_account,
    locked_nft_account: &locked_nft_account,
    personal_position: &personal_position_account,
    pool_state: &pool_state_account,
    protocol_position: &protocol_position_account,
    token_0_vault: &token_0_vault_account,
    token_1_vault: &token_1_vault_account,
    tick_array_lower: &tick_array_lower_account,
    tick_array_upper: &tick_array_upper_account,
    recipient_token_0_account: &recipient_token_0_account,
    recipient_token_1_account: &recipient_token_1_account,
    token_program: &token_program_account,
    token_program_2022: &token_program_2022_account,
    memo_program: &memo_program_account,
    vault_0_mint: &vault_0_mint_account,
    vault_1_mint: &vault_1_mint_account,
};

collect_ix.invoke()?;

Dependencies

  • pinocchio = "0.8.4" - Pinocchio framework for Solana programs
  • pinocchio-system = "0.2.3" - Pinocchio system program helpers

License

Licensed under the Apache License, Version 2.0.

Commit count: 0

cargo fmt