UNPKG

@wuwei-labs/srsly

Version:
94 lines 3.69 kB
"use strict"; /** * @purpose Simplified updateConfig instruction wrapper * * Thin convenience wrapper around Codama-generated updateConfig instruction. * Updates the global program configuration settings. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.updateConfig = updateConfig; 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"); /** * Convert a value to Option type */ function toOption(value) { return value === null || value === undefined ? (0, kit_1.none)() : (0, kit_1.some)(value); } /** * Update one or more global program settings. All fields are optional — * only the ones you supply change. * * @param params - Configuration update parameters * @param config - Optional SDK configuration overrides * @returns Kit instruction (or web3.js if PublicKey in config) * * @example * ```typescript * // Update service fee * const ix = await updateConfig({ * admin: adminWallet, * serviceFeeBps: 1000 // 10% * }); * * // Update multiple settings * const ix2 = await updateConfig({ * admin: adminWallet, * serviceFeeBps: 1500, * reservationsEnabled: true, * pointsPerDay: 100 * }); * * // Change admin * const ix3 = await updateConfig({ * admin: currentAdmin, * newAdmin: newAdminAddress * }); * ``` */ async function updateConfig(params, config) { // Merge config const finalConfig = (0, config_1.mergeConfig)(config); // Validate required params if (!params.admin) { throw new Error('admin is required'); } // Convert admin to transaction signer const adminSigner = (0, signer_1.toTransactionSigner)(params.admin); // Get network-specific addresses const addresses = (0, config_1.getAddresses)(config); const programAddress = (0, kit_1.address)(addresses.srsly); // Convert newAdmin to address if provided const newAdminAddress = params.newAdmin ? (0, kit_1.address)(params.newAdmin) : undefined; // Convert atlasMint to address if provided const atlasMintAddress = params.atlasMint ? (0, kit_1.address)(params.atlasMint) : undefined; // Call Codama-generated instruction const kitInstruction = await (0, instructions_1.getUpdateConfigInstructionAsync)({ admin: adminSigner, adminArg: toOption(newAdminAddress), stardustToAtlas: toOption(params.stardustToAtlas), serviceFeeBps: toOption(params.serviceFeeBps), baseBps: toOption(params.baseBps), rentalDurationMinSeconds: toOption(params.rentalDurationMinSeconds), rentalDurationMaxSeconds: toOption(params.rentalDurationMaxSeconds), atlasMint: toOption(atlasMintAddress), reservationsEnabled: toOption(params.reservationsEnabled), pointsPerDay: toOption(params.pointsPerDay), cancellationPenalty: toOption(params.cancellationPenalty), minCaptureThreshold: toOption(params.minCaptureThreshold), weightBase: toOption(params.weightBase), weightMultiplier: toOption(params.weightMultiplier), maxWeight: toOption(params.maxWeight), captureRateBps: toOption(params.captureRateBps), atlasPerPoint: toOption(params.atlasPerPoint), contestedMultiplierMaxBps: toOption(params.contestedMultiplierMaxBps), }, { programAddress }); return (0, instructions_2.prepareInstructions)(kitInstruction, { computeUnits: params.computeUnits, PublicKey: finalConfig.PublicKey, }); } //# sourceMappingURL=updateConfig.js.map