UNPKG

@symmetry-hq/baskets-v2-sdk

Version:

Symmetry Baskets V2 SDK

49 lines (44 loc) 1.92 kB
// Core dependencies import { Program } from "@coral-xyz/anchor"; import { AddressLookupTableProgram, PublicKey, SystemProgram, TransactionInstruction } from "@solana/web3.js"; // Local imports import { BasketsProgram } from "../../idl/types"; import { fetchBasketState } from "../../state/basket"; import { getBasketPda, getDeactivatedLookupTableAccount, getLookupTableAccount, getStateCreatorAccount } from "../../utils/programAccounts"; export async function createLookupTableIx(params: { program: Program<BasketsProgram>; manager: PublicKey; basket: PublicKey; }): Promise<TransactionInstruction> { const { program, manager } = params; const basketState = await fetchBasketState(program, params.basket); const slot = await program.provider.connection.getSlot(); const basketPda = getBasketPda(params.basket); const oldLookupTable1 = basketState.otherLookupTable1; const oldLookupTable2 = basketState.otherLookupTable2; const newLookupTable1 = getLookupTableAccount(basketPda, slot); const newLookupTable2 = getLookupTableAccount(basketPda, slot - 1); const deactivatedLookupTable1 = getDeactivatedLookupTableAccount(oldLookupTable1); const deactivatedLookupTable2 = getDeactivatedLookupTableAccount(oldLookupTable2); const stateCreator = getStateCreatorAccount(); const ix = await program.methods .createLookupTable( slot ) .accountsStrict({ manager, basket: params.basket, basketPda, oldLookupTable1, oldLookupTable2, newLookupTable1, newLookupTable2, deactivatedLookupTable1, deactivatedLookupTable2, stateCreator, addressLookupTableProgram: AddressLookupTableProgram.programId, systemProgram: SystemProgram.programId, }) .instruction(); return ix; }