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