@wuwei-labs/srsly
Version:
TypeScript SDK for SRSLY
77 lines • 3.09 kB
JavaScript
;
/**
* @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