UNPKG

@wuwei-labs/srsly

Version:
77 lines 3.09 kB
"use strict"; /** * @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. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.deleteConfig = deleteConfig; const kit_1 = require("@solana/kit"); const instructions_1 = require("../generated/codama/instructions"); const config_1 = require("../utils/config"); const signer_1 = require("../utils/signer"); const instructions_2 = require("../utils/instructions"); const config_2 = require("../accounts/config"); const slyvault_1 = require("../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 * }); * ``` */ async function deleteConfig(params, config) { // Merge config const finalConfig = (0, config_1.mergeConfig)(config); // Get network-specific addresses const addresses = (0, config_1.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 = (0, kit_1.address)(addresses.srsly); // Resolve mint: explicit param > on-chain config > hardcoded fallback let mintAddress; if (params.mint) { mintAddress = (0, kit_1.address)(params.mint); } else { try { const configAccount = await (0, config_2.fetchConfig)(finalConfig.rpcUrl); mintAddress = configAccount.data.atlasMint; } catch { mintAddress = (0, kit_1.address)(addresses.atlasMint); } } // Convert authority to TransactionSigner if provided const authoritySigner = params.authority ? (0, signer_1.toTransactionSigner)(params.authority) : undefined; // Derive vault PDA (creator = SRSLY program) const { vault, vaultTokenAccount } = await (0, slyvault_1.deriveVault)(programAddress, mintAddress); // Call Codama-generated instruction const kitInstruction = await (0, instructions_1.getDeleteConfigInstructionAsync)({ authority: authoritySigner, vault, vaultTokenAccount, mint: mintAddress, }, { programAddress }); return (0, instructions_2.prepareInstructions)(kitInstruction, { computeUnits: params.computeUnits, PublicKey: finalConfig.PublicKey, }); } //# sourceMappingURL=deleteConfig.js.map