UNPKG

@wuwei-labs/srsly

Version:
74 lines 2.88 kB
/** * @purpose Simplified deleteConfig instruction wrapper * * Thin convenience wrapper around Codama-generated deleteConfig instruction. * Deletes the global program configuration and associated vault to allow re-initialization. * * WARNING: This is a destructive operation that will prevent all program * operations until the config is re-initialized. */ import { address } from '@solana/kit'; import { getDeleteConfigInstructionAsync } from '../generated/codama/instructions'; import { mergeConfig, getAddresses } from '../utils/config'; import { toTransactionSigner } from '../utils/signer'; import { prepareInstructions } from '../utils/instructions'; import { fetchConfig } from '../accounts/config'; import { deriveVault } from '../pda/slyvault'; /** * Delete the program's global config + vault. Destructive — halts all * program operations until `createConfig` runs again. Authorized * initializer only. * * @param params - Configuration deletion parameters * @param config - Optional SDK configuration overrides * @returns Kit instruction (or web3.js if PublicKey in config) * * @example * ```typescript * // Delete config and vault with required mint * const ix = await deleteConfig({ * authority: authorizedWallet, * mint: atlasMintAddress * }); * ``` */ export async function deleteConfig(params, config) { // Merge config const finalConfig = mergeConfig(config); // Get network-specific addresses const addresses = getAddresses(config); if (!addresses.srsly || addresses.srsly === 'undefined') { throw new Error(`Invalid SRSLY program address: ${addresses.srsly}. SDK config may not be initialized properly.`); } const programAddress = address(addresses.srsly); // Resolve mint: explicit param > on-chain config > hardcoded fallback let mintAddress; if (params.mint) { mintAddress = address(params.mint); } else { try { const configAccount = await fetchConfig(finalConfig.rpcUrl); mintAddress = configAccount.data.atlasMint; } catch { mintAddress = address(addresses.atlasMint); } } // Convert authority to TransactionSigner if provided const authoritySigner = params.authority ? toTransactionSigner(params.authority) : undefined; // Derive vault PDA (creator = SRSLY program) const { vault, vaultTokenAccount } = await deriveVault(programAddress, mintAddress); // Call Codama-generated instruction const kitInstruction = await getDeleteConfigInstructionAsync({ authority: authoritySigner, vault, vaultTokenAccount, mint: mintAddress, }, { programAddress }); return prepareInstructions(kitInstruction, { computeUnits: params.computeUnits, PublicKey: finalConfig.PublicKey, }); } //# sourceMappingURL=deleteConfig.js.map