import { TransactionInstruction } from "@solana/web3.js"; import * as ixs from "./instructions"; import { SolCatContext } from "./contexts/solcat-context"; import { V2Context } from "./contexts/v2-context"; export class SolCatMethods { public ctx: SolCatContext; public ix: TransactionInstruction | null | undefined; public constructor(ctx: SolCatContext, ix?: TransactionInstruction) { this.ctx = ctx; this.ix = ix; } // Admin functions public async updateAdmin(params: ixs.UpdateAdminParams) { this.ix = await ixs.updateAdmin(this.ctx.program, params); return this; } public async withdrawFund(params: ixs.WithdrawFundParams) { this.ix = await ixs.withdrawFund(this.ctx.program, params); return this; } public async updateLockupVault(params: ixs.UpdateLockupVaultParams) { this.ix = await ixs.updateLockupVault(this.ctx.program, params); return this; } public async updateFlexibleVault(params: ixs.UpdateFlexibleVaultParams) { this.ix = await ixs.updateFlexibleVault(this.ctx.program, params); return this; } // User functions public async initUser(params: ixs.InitUserParams) { this.ix = await ixs.initUser(this.ctx.program, params); return this; } public async initFlexibleAccount(params: ixs.InitFlexibleAccountParams) { this.ix = await ixs.initFlexibleAccount(this.ctx.program, params); return this; } public async stake(params: ixs.StakeParams) { this.ix = await ixs.stake(this.ctx.program, params); return this; } public async withdraw(params: ixs.WithdrawParams) { this.ix = await ixs.withdraw(this.ctx.program, params); return this; } public async withdrawDelay(params: ixs.WithdrawDelayParams) { this.ix = await ixs.withdrawDelay(this.ctx.program, params); return this; } public async claim(params: ixs.ClaimParams) { this.ix = await ixs.claim(this.ctx.program, params); return this; } public async lockup(params: ixs.LockupParams) { this.ix = await ixs.lockup(this.ctx.program, params); return this; } public async unlock(params: ixs.UnlockParams) { this.ix = await ixs.unlock(this.ctx.program, params); return this; } } export class V2Methods { public ctx: V2Context; public ix: TransactionInstruction | null | undefined; public constructor(ctx: V2Context, ix?: TransactionInstruction) { this.ctx = ctx; this.ix = ix; } // Admin functions public async updateAdmin(params: ixs.UpdateAdminParams) { this.ix = await ixs.updateAdmin(this.ctx.program, params); return this; } public async withdrawFund(params: ixs.WithdrawFundParams) { this.ix = await ixs.withdrawFund(this.ctx.program, params); return this; } public async withdrawRevenue(params: ixs.WithdrawRevenueParams) { this.ix = await ixs.withdrawRevenue(this.ctx.program, params); return this; } public async updateLockupVault(params: ixs.UpdateLockupVaultParams) { this.ix = await ixs.updateLockupVault(this.ctx.program, params); return this; } public async updateFlexibleVault(params: ixs.UpdateFlexibleVaultParams) { this.ix = await ixs.updateFlexibleVault(this.ctx.program, params); return this; } public async updateFee(params: ixs.UpdateFeeParams) { this.ix = await ixs.updateFee(this.ctx.program, params); return this; } public async initFlexibleVault(params: ixs.InitFlexibleVaultParams) { this.ix = await ixs.initFlexibleVault(this.ctx.program, params); return this; } public async initLockupVault(params: ixs.InitLockupVaultParams) { this.ix = await ixs.initLockupVault(this.ctx.program, params); return this; } // User functions public async initUser(params: ixs.InitUserParams) { this.ix = await ixs.initUser(this.ctx.program, params); return this; } public async initFlexibleAccount(params: ixs.InitFlexibleAccountParams) { this.ix = await ixs.initFlexibleAccount(this.ctx.program, params); return this; } public async stake(params: ixs.StakeParams) { this.ix = await ixs.stake(this.ctx.program, params); return this; } public async withdraw(params: ixs.WithdrawParams) { this.ix = await ixs.withdraw(this.ctx.program, params); return this; } public async withdrawDelay(params: ixs.WithdrawDelayParams) { this.ix = await ixs.withdrawDelay(this.ctx.program, params); return this; } public async claim(params: ixs.ClaimParams) { this.ix = await ixs.claim(this.ctx.program, params); return this; } public async lockup(params: ixs.LockupParams) { this.ix = await ixs.lockup(this.ctx.program, params); return this; } public async unlock(params: ixs.UnlockParams) { this.ix = await ixs.unlock(this.ctx.program, params); return this; } }