import * as anchor from "@project-serum/anchor"; import { getAssociatedTokenAddress } from "@solana/spl-token"; import { getStrikr, getStrikrAuthority } from "../utils"; /** * Close the OptionState account and release lamports * @param provider Anchor provider * @param assetNftMint Asset NFT which underlies the option * @returns Promise resolving to the transaction signature */ export const closeOptionState = async ( provider: anchor.AnchorProvider, assetNftMint: anchor.web3.PublicKey ) => { const strikr = getStrikr(provider); const transaction = new anchor.web3.Transaction(); const strikrAuthority = await getStrikrAuthority(); const strikrAssetNftTokenAccount = await getAssociatedTokenAddress( assetNftMint, strikrAuthority, true ); transaction.add( await strikr.methods .closeOptionState() .accounts({ signer: provider.wallet.publicKey, assetNftMint, strikrAssetNftTokenAccount, }) .instruction() ); return await provider.sendAndConfirm(transaction); };