UNPKG

@wuwei-labs/srsly

Version:
81 lines 3.08 kB
"use strict"; /** * @purpose Simplified createConfig instruction wrapper * * Thin convenience wrapper around Codama-generated createConfig instruction. * One-time creation of the global program configuration. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.createConfig = createConfig; 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"); /** * One-time initialization of the global program config. Required before * any other instruction can run. * * @param params - Configuration creation parameters * @param config - Optional SDK configuration overrides * @returns Kit instruction (or web3.js if PublicKey in config) * * @example * ```typescript * // Create with default authority * const ix = await createConfig({ * vault: vaultAddress, * vaultTokenAccount: vaultTokenAccountAddress * }); * * // Create with custom authority * const ix2 = await createConfig({ * authority: adminWallet, * vault: vaultAddress, * vaultTokenAccount: vaultTokenAccountAddress * }); * ``` */ async function createConfig(params, config) { // Merge config const finalConfig = (0, config_1.mergeConfig)(config); // Validate required params if (!params.vault) { throw new Error('vault is required'); } if (!params.vaultTokenAccount) { throw new Error('vaultTokenAccount is required'); } if (!params.lookupTable) { throw new Error('lookupTable is required'); } if (params.recentSlot === undefined || params.recentSlot === null) { throw new Error('recentSlot is required'); } // Get network-specific addresses const addresses = (0, config_1.getAddresses)(config); const atlasMint = (0, kit_1.address)(addresses.atlasMint); const programAddress = (0, kit_1.address)(addresses.srsly); const sageProgram = (0, kit_1.address)(addresses.sage); const antegenProgram = (0, kit_1.address)(addresses.antegen); // Convert authority to TransactionSigner const authoritySigner = (0, signer_1.toTransactionSigner)(params.authority); // Call Codama-generated instruction // srslyProgram is passed automatically as programAddress for vault derivation const kitInstruction = await (0, instructions_1.getCreateConfigInstructionAsync)({ authority: authoritySigner, mint: atlasMint, vault: (0, kit_1.address)(params.vault), vaultTokenAccount: (0, kit_1.address)(params.vaultTokenAccount), lookupTable: (0, kit_1.address)(params.lookupTable), sageProgram, antegenProgram, srslyProgram: programAddress, recentSlot: BigInt(params.recentSlot), }, { programAddress }); return (0, instructions_2.prepareInstructions)(kitInstruction, { computeUnits: params.computeUnits, PublicKey: finalConfig.PublicKey, }); } //# sourceMappingURL=createConfig.js.map