jup-lend-sdk 0.2.1

SDK for Jupiter lending protocol
Documentation
use std::ops::Add;

use crate::programs::vaults::ID;

use anchor_lang::prelude::Pubkey;

use super::ticks::MAX_TICK;

pub fn get_vault_state(vault_id: u16) -> Pubkey {
    Pubkey::find_program_address(&[b"vault_state", &vault_id.to_le_bytes()], &ID).0
}

pub fn get_vault_config(vault_id: u16) -> Pubkey {
    Pubkey::find_program_address(&[b"vault_config", &vault_id.to_le_bytes()], &ID).0
}

pub fn get_vault_metadata(vault_id: u16) -> Pubkey {
    Pubkey::find_program_address(&[b"vault_metadata", &vault_id.to_le_bytes()], &ID).0
}

pub fn get_vault_admin() -> Pubkey {
    Pubkey::find_program_address(&[b"vault_admin"], &ID).0
}

pub fn get_tick(vault_id: u16, tick: i32) -> Pubkey {
    Pubkey::find_program_address(
        &[
            b"tick",
            &vault_id.to_le_bytes(),
            &tick.add(MAX_TICK).to_le_bytes(),
        ],
        &ID,
    )
    .0
}

pub fn get_branch(vault_id: u16, branch_id: u32) -> Pubkey {
    Pubkey::find_program_address(
        &[b"branch", &vault_id.to_le_bytes(), &branch_id.to_le_bytes()],
        &ID,
    )
    .0
}

pub fn get_tick_has_debt(vault_id: u16, index: u8) -> Pubkey {
    Pubkey::find_program_address(
        &[
            b"tick_has_debt",
            &vault_id.to_le_bytes(),
            &index.to_le_bytes(),
        ],
        &ID,
    )
    .0
}