@nosana/kit
Version:
Nosana KIT
39 lines • 1.81 kB
JavaScript
import { generateKeyPairSigner } from '@solana/kit';
import { SYSTEM_PROGRAM_ADDRESS } from '@solana-program/system';
export async function open({ nodeAccessKey, jobExpiration, jobType, jobPrice, jobTimeout, nodeStakeMinimum, payer, } = {}, { config, deps, client, getRequiredWallet, getStaticAccounts }) {
try {
const wallet = getRequiredWallet();
// Use provided payer or fall back to wallet
const nosPayer = payer ?? wallet;
// Generate new keypair for market and get jobs program address
const [marketKeypair, { jobsProgram }] = await Promise.all([
generateKeyPairSigner(),
getStaticAccounts(),
]);
// Derive vault PDA: [market, mint]
const vault = await deps.solana.pda([marketKeypair.address, config.nosTokenAddress], jobsProgram);
// Use default access key if not provided (system program)
const accessKey = nodeAccessKey ?? SYSTEM_PROGRAM_ADDRESS;
// Create the open instruction
return client.getOpenInstruction({
mint: config.nosTokenAddress,
market: marketKeypair,
vault: vault,
authority: nosPayer,
accessKey: accessKey,
jobExpiration: jobExpiration ?? 86400, // 24 hours in seconds
jobPrice: jobPrice ?? 0,
jobTimeout: jobTimeout ?? 7200, // 120 minutes in seconds
jobType: jobType ?? 0,
nodeXnosMinimum: nodeStakeMinimum ?? 0,
}, {
programAddress: jobsProgram,
});
}
catch (err) {
const errorMessage = `Failed to create open instruction: ${err instanceof Error ? err.message : String(err)}`;
deps.logger.error(errorMessage);
throw new Error(errorMessage);
}
}
//# sourceMappingURL=open.js.map