@wuwei-labs/srsly
Version:
TypeScript SDK for SRSLY
56 lines • 2.47 kB
JavaScript
"use strict";
/**
* @purpose Simplified updateContractThread instruction wrapper
*
* Thin convenience wrapper around Codama-generated updateContractThread instruction.
* Funds additional lamports and/or updates the payment frequency for a contract thread.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateContractThread = updateContractThread;
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 thread_1 = require("../pda/thread");
const srsly_1 = require("../pda/srsly");
const schedule_1 = require("../params/schedule");
const sol_1 = require("../params/sol");
/**
* Top up a contract thread's lamports balance and (optionally)
* reschedule its payment frequency.
*
* @param params - Thread update parameters
* @param config - Optional SDK configuration overrides
* @returns Kit instruction (or web3.js if PublicKey in config)
*/
async function updateContractThread(params, config) {
const finalConfig = (0, config_1.mergeConfig)(config);
if (!params.owner) {
throw new Error('owner is required');
}
if (!params.contract) {
throw new Error('contract is required');
}
const ownerSigner = (0, signer_1.toTransactionSigner)(params.owner);
const addresses = (0, config_1.getAddresses)(config);
const programAddress = (0, kit_1.address)(addresses.srsly);
const contractAddress = (0, kit_1.address)(params.contract);
// Derive thread PDA
const rentalAuthority = await (0, srsly_1.deriveRentalAuthority)();
const contractThread = await (0, thread_1.deriveContractThread)(contractAddress, rentalAuthority);
// Normalize optional schedule
const paymentsFreq = params.paymentsFreq ? (0, schedule_1.normalizeSchedule)(params.paymentsFreq) : null;
const kitInstruction = await (0, instructions_1.getUpdateContractThreadInstructionAsync)({
payer: ownerSigner,
contract: contractAddress,
contractThread,
lamports: (0, sol_1.convertSol)(params.lamports ?? 0),
paymentsFreq,
}, { programAddress });
return (0, instructions_2.prepareInstructions)(kitInstruction, {
computeUnits: params.computeUnits,
PublicKey: finalConfig.PublicKey,
});
}
//# sourceMappingURL=updateContractThread.js.map