diff --git a/anchor/programs/glam/src/instructions/marinade.rs b/anchor/programs/glam/src/instructions/marinade.rs index add9cf89..ac15caef 100644 --- a/anchor/programs/glam/src/instructions/marinade.rs +++ b/anchor/programs/glam/src/instructions/marinade.rs @@ -59,7 +59,6 @@ pub fn marinade_delayed_unstake<'c: 'info, 'info>( ctx: Context, msol_amount: u64, ticket_bump: u8, - treasury_bump: u8, ) -> Result<()> { let rent = Rent::get()?; let lamports = rent.minimum_balance(500); // Minimum balance to make the account rent-exempt @@ -92,7 +91,7 @@ pub fn marinade_delayed_unstake<'c: 'info, 'info>( state: ctx.accounts.marinade_state.to_account_info(), msol_mint: ctx.accounts.msol_mint.to_account_info(), burn_msol_from: ctx.accounts.burn_msol_from.to_account_info(), - burn_msol_authority: ctx.accounts.burn_msol_authority.to_account_info(), + burn_msol_authority: ctx.accounts.treasury.to_account_info(), new_ticket_account: ctx.accounts.ticket.to_account_info(), clock: ctx.accounts.clock.to_account_info(), rent: ctx.accounts.rent.to_account_info(), @@ -100,7 +99,11 @@ pub fn marinade_delayed_unstake<'c: 'info, 'info>( }; let fund_key = ctx.accounts.fund.key(); - let seeds = &[b"treasury".as_ref(), fund_key.as_ref(), &[treasury_bump]]; + let seeds = &[ + b"treasury".as_ref(), + fund_key.as_ref(), + &[ctx.bumps.treasury], + ]; let signer_seeds = &[&seeds[..]]; let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer_seeds); let _ = order_unstake(cpi_ctx, msol_amount); @@ -108,21 +111,22 @@ pub fn marinade_delayed_unstake<'c: 'info, 'info>( Ok(()) } -pub fn marinade_claim<'c: 'info, 'info>( - ctx: Context, - treasury_bump: u8, -) -> Result<()> { +pub fn marinade_claim<'c: 'info, 'info>(ctx: Context) -> Result<()> { let cpi_program = ctx.accounts.marinade_program.to_account_info(); let cpi_accounts = Claim { state: ctx.accounts.marinade_state.to_account_info(), ticket_account: ctx.accounts.ticket.to_account_info(), - transfer_sol_to: ctx.accounts.transfer_sol_to.to_account_info(), + transfer_sol_to: ctx.accounts.treasury.to_account_info(), reserve_pda: ctx.accounts.reserve_pda.to_account_info(), system_program: ctx.accounts.system_program.to_account_info(), clock: ctx.accounts.clock.to_account_info(), }; let fund_key = ctx.accounts.fund.key(); - let seeds = &[b"treasury".as_ref(), fund_key.as_ref(), &[treasury_bump]]; + let seeds = &[ + b"treasury".as_ref(), + fund_key.as_ref(), + &[ctx.bumps.treasury], + ]; let signer_seeds = &[&seeds[..]]; let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer_seeds); let _ = claim(cpi_ctx); @@ -132,7 +136,6 @@ pub fn marinade_claim<'c: 'info, 'info>( pub fn marinade_liquid_unstake<'c: 'info, 'info>( ctx: Context, msol_amount: u64, - treasury_bump: u8, ) -> Result<()> { let cpi_program = ctx.accounts.marinade_program.to_account_info(); let cpi_accounts = LiquidUnstake { @@ -142,12 +145,18 @@ pub fn marinade_liquid_unstake<'c: 'info, 'info>( liq_pool_msol_leg: ctx.accounts.liq_pool_msol_leg.to_account_info(), get_msol_from: ctx.accounts.get_msol_from.to_account_info(), get_msol_from_authority: ctx.accounts.get_msol_from_authority.to_account_info(), - transfer_sol_to: ctx.accounts.transfer_sol_to.to_account_info(), + transfer_sol_to: ctx.accounts.treasury.to_account_info(), treasury_msol_account: ctx.accounts.treasury_msol_account.to_account_info(), system_program: ctx.accounts.system_program.to_account_info(), token_program: ctx.accounts.token_program.to_account_info(), }; - let seeds = &[b"treasury".as_ref(), &[treasury_bump]]; + + let fund_key = ctx.accounts.fund.key(); + let seeds = &[ + b"treasury".as_ref(), + fund_key.as_ref(), + &[ctx.bumps.treasury], + ]; let signer_seeds = &[&seeds[..]]; let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer_seeds); let _ = liquid_unstake(cpi_ctx, msol_amount); @@ -159,6 +168,13 @@ pub struct MarinadeDeposit<'info> { #[account(mut)] pub manager: Signer<'info>, + #[account(has_one = manager, has_one = treasury)] + pub fund: Box>, + + /// CHECK: skip + #[account(mut, seeds = [b"treasury".as_ref(), fund.key().as_ref()], bump)] + pub treasury: AccountInfo<'info>, + #[account(mut)] pub marinade_state: Account<'info, MarinadeState>, @@ -194,13 +210,6 @@ pub struct MarinadeDeposit<'info> { )] pub mint_to: Account<'info, TokenAccount>, - /// CHECK: skip - #[account(mut, seeds = [b"treasury".as_ref(), fund.key().as_ref()], bump)] - pub treasury: AccountInfo<'info>, - - #[account(mut, has_one = manager)] - pub fund: Box>, - pub marinade_program: Program<'info, MarinadeFinance>, pub associated_token_program: Program<'info, AssociatedToken>, pub system_program: Program<'info, System>, @@ -211,15 +220,19 @@ pub struct MarinadeDeposit<'info> { pub struct MarinadeDelayedUnstake<'info> { #[account(mut)] pub manager: Signer<'info>, + + #[account(has_one = manager, has_one = treasury)] + pub fund: Box>, + + /// CHECK: skip + #[account(mut, seeds = [b"treasury".as_ref(), fund.key().as_ref()], bump)] + pub treasury: AccountInfo<'info>, + /// CHECK: skip // #[account(init_if_needed, seeds = [b"ticket"], bump, payer = signer, space = 88, owner = marinade_program.key())] #[account(mut)] pub ticket: AccountInfo<'info>, - /// CHECK: skip - #[account()] - pub fund: AccountInfo<'info>, - /// CHECK: skip #[account(mut)] pub msol_mint: AccountInfo<'info>, @@ -228,10 +241,6 @@ pub struct MarinadeDelayedUnstake<'info> { #[account(mut)] pub burn_msol_from: AccountInfo<'info>, - /// CHECK: skip - #[account(mut)] - pub burn_msol_authority: AccountInfo<'info>, - /// CHECK: skip #[account(mut)] pub marinade_state: AccountInfo<'info>, @@ -252,9 +261,12 @@ pub struct MarinadeClaim<'info> { #[account(mut)] pub manager: Signer<'info>, + #[account(has_one = manager, has_one = treasury)] + pub fund: Box>, + /// CHECK: skip - #[account()] - pub fund: AccountInfo<'info>, + #[account(mut, seeds = [b"treasury".as_ref(), fund.key().as_ref()], bump)] + pub treasury: AccountInfo<'info>, /// CHECK: skip // #[account(init_if_needed, seeds = [b"ticket"], bump, payer = signer, space = 88, owner = marinade_program.key())] @@ -265,10 +277,6 @@ pub struct MarinadeClaim<'info> { #[account(mut)] pub marinade_state: AccountInfo<'info>, - /// CHECK: skip - #[account(mut)] - pub transfer_sol_to: AccountInfo<'info>, - /// CHECK: skip #[account(mut)] pub reserve_pda: AccountInfo<'info>, @@ -282,7 +290,15 @@ pub struct MarinadeClaim<'info> { #[derive(Accounts)] pub struct MarinadeLiquidUnstake<'info> { - // pub signer: Signer<'info>, + pub manager: Signer<'info>, + + #[account(has_one = manager, has_one = treasury)] + pub fund: Box>, + + /// CHECK: skip + #[account(mut, seeds = [b"treasury".as_ref(), fund.key().as_ref()], bump)] + pub treasury: AccountInfo<'info>, + /// CHECK: skip #[account(mut)] pub marinade_state: AccountInfo<'info>, @@ -311,10 +327,6 @@ pub struct MarinadeLiquidUnstake<'info> { #[account(mut)] pub get_msol_from_authority: AccountInfo<'info>, - /// CHECK: skip - #[account(mut)] - pub transfer_sol_to: AccountInfo<'info>, - pub marinade_program: Program<'info, MarinadeFinance>, pub token_program: Program<'info, Token>, pub system_program: Program<'info, System>, diff --git a/anchor/programs/glam/src/lib.rs b/anchor/programs/glam/src/lib.rs index 00059778..aefc3dab 100644 --- a/anchor/programs/glam/src/lib.rs +++ b/anchor/programs/glam/src/lib.rs @@ -5,8 +5,8 @@ pub mod state; use anchor_lang::prelude::*; +use crate::instructions::*; pub use constants::*; -pub use instructions::*; pub use state::fund::*; declare_id!("Gco1pcjxCMYjKJjSNJ7mKV7qezeUTE7arXJgy7PAPNRc"); @@ -111,16 +111,22 @@ pub mod glam { marinade::marinade_deposit(ctx, sol_amount) } + pub fn marinade_liquid_unstake( + ctx: Context, + sol_amount: u64, + ) -> Result<()> { + marinade::marinade_liquid_unstake(ctx, sol_amount) + } + pub fn marinade_delayed_unstake( ctx: Context, amount: u64, ticket_bump: u8, - treasury_bump: u8, ) -> Result<()> { - marinade::marinade_delayed_unstake(ctx, amount, ticket_bump, treasury_bump) + marinade::marinade_delayed_unstake(ctx, amount, ticket_bump) } - pub fn marinade_claim(ctx: Context, treasury_bump: u8) -> Result<()> { - marinade::marinade_claim(ctx, treasury_bump) + pub fn marinade_claim(ctx: Context) -> Result<()> { + marinade::marinade_claim(ctx) } } diff --git a/anchor/target/idl/glam.json b/anchor/target/idl/glam.json index f82d3b15..a23cc274 100644 --- a/anchor/target/idl/glam.json +++ b/anchor/target/idl/glam.json @@ -560,6 +560,16 @@ "isMut": true, "isSigner": true }, + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": true, + "isSigner": false + }, { "name": "marinadeState", "isMut": true, @@ -600,28 +610,89 @@ "isMut": true, "isSigner": false }, + { + "name": "marinadeProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "associatedTokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "solAmount", + "type": "u64" + } + ] + }, + { + "name": "marinadeLiquidUnstake", + "accounts": [ + { + "name": "manager", + "isMut": false, + "isSigner": true + }, + { + "name": "fund", + "isMut": false, + "isSigner": false + }, { "name": "treasury", "isMut": true, "isSigner": false }, { - "name": "fund", + "name": "marinadeState", "isMut": true, "isSigner": false }, { - "name": "marinadeProgram", - "isMut": false, + "name": "msolMint", + "isMut": true, "isSigner": false }, { - "name": "associatedTokenProgram", - "isMut": false, + "name": "liqPoolSolLegPda", + "isMut": true, "isSigner": false }, { - "name": "systemProgram", + "name": "liqPoolMsolLeg", + "isMut": true, + "isSigner": false + }, + { + "name": "treasuryMsolAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "getMsolFrom", + "isMut": true, + "isSigner": false + }, + { + "name": "getMsolFromAuthority", + "isMut": true, + "isSigner": false + }, + { + "name": "marinadeProgram", "isMut": false, "isSigner": false }, @@ -629,6 +700,11 @@ "name": "tokenProgram", "isMut": false, "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false } ], "args": [ @@ -647,27 +723,27 @@ "isSigner": true }, { - "name": "ticket", - "isMut": true, + "name": "fund", + "isMut": false, "isSigner": false }, { - "name": "fund", - "isMut": false, + "name": "treasury", + "isMut": true, "isSigner": false }, { - "name": "msolMint", + "name": "ticket", "isMut": true, "isSigner": false }, { - "name": "burnMsolFrom", + "name": "msolMint", "isMut": true, "isSigner": false }, { - "name": "burnMsolAuthority", + "name": "burnMsolFrom", "isMut": true, "isSigner": false }, @@ -715,10 +791,6 @@ { "name": "ticketBump", "type": "u8" - }, - { - "name": "treasuryBump", - "type": "u8" } ] }, @@ -736,17 +808,17 @@ "isSigner": false }, { - "name": "ticket", + "name": "treasury", "isMut": true, "isSigner": false }, { - "name": "marinadeState", + "name": "ticket", "isMut": true, "isSigner": false }, { - "name": "transferSolTo", + "name": "marinadeState", "isMut": true, "isSigner": false }, @@ -781,12 +853,7 @@ "isSigner": false } ], - "args": [ - { - "name": "treasuryBump", - "type": "u8" - } - ] + "args": [] } ], "accounts": [ diff --git a/anchor/target/types/glam.ts b/anchor/target/types/glam.ts index 8f062edb..1443b774 100644 --- a/anchor/target/types/glam.ts +++ b/anchor/target/types/glam.ts @@ -560,6 +560,16 @@ export type Glam = { "isMut": true, "isSigner": true }, + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": true, + "isSigner": false + }, { "name": "marinadeState", "isMut": true, @@ -600,28 +610,89 @@ export type Glam = { "isMut": true, "isSigner": false }, + { + "name": "marinadeProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "associatedTokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "solAmount", + "type": "u64" + } + ] + }, + { + "name": "marinadeLiquidUnstake", + "accounts": [ + { + "name": "manager", + "isMut": false, + "isSigner": true + }, + { + "name": "fund", + "isMut": false, + "isSigner": false + }, { "name": "treasury", "isMut": true, "isSigner": false }, { - "name": "fund", + "name": "marinadeState", "isMut": true, "isSigner": false }, { - "name": "marinadeProgram", - "isMut": false, + "name": "msolMint", + "isMut": true, "isSigner": false }, { - "name": "associatedTokenProgram", - "isMut": false, + "name": "liqPoolSolLegPda", + "isMut": true, "isSigner": false }, { - "name": "systemProgram", + "name": "liqPoolMsolLeg", + "isMut": true, + "isSigner": false + }, + { + "name": "treasuryMsolAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "getMsolFrom", + "isMut": true, + "isSigner": false + }, + { + "name": "getMsolFromAuthority", + "isMut": true, + "isSigner": false + }, + { + "name": "marinadeProgram", "isMut": false, "isSigner": false }, @@ -629,6 +700,11 @@ export type Glam = { "name": "tokenProgram", "isMut": false, "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false } ], "args": [ @@ -647,27 +723,27 @@ export type Glam = { "isSigner": true }, { - "name": "ticket", - "isMut": true, + "name": "fund", + "isMut": false, "isSigner": false }, { - "name": "fund", - "isMut": false, + "name": "treasury", + "isMut": true, "isSigner": false }, { - "name": "msolMint", + "name": "ticket", "isMut": true, "isSigner": false }, { - "name": "burnMsolFrom", + "name": "msolMint", "isMut": true, "isSigner": false }, { - "name": "burnMsolAuthority", + "name": "burnMsolFrom", "isMut": true, "isSigner": false }, @@ -715,10 +791,6 @@ export type Glam = { { "name": "ticketBump", "type": "u8" - }, - { - "name": "treasuryBump", - "type": "u8" } ] }, @@ -736,17 +808,17 @@ export type Glam = { "isSigner": false }, { - "name": "ticket", + "name": "treasury", "isMut": true, "isSigner": false }, { - "name": "marinadeState", + "name": "ticket", "isMut": true, "isSigner": false }, { - "name": "transferSolTo", + "name": "marinadeState", "isMut": true, "isSigner": false }, @@ -781,12 +853,7 @@ export type Glam = { "isSigner": false } ], - "args": [ - { - "name": "treasuryBump", - "type": "u8" - } - ] + "args": [] } ], "accounts": [ @@ -1585,6 +1652,16 @@ export const IDL: Glam = { "isMut": true, "isSigner": true }, + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": true, + "isSigner": false + }, { "name": "marinadeState", "isMut": true, @@ -1625,28 +1702,89 @@ export const IDL: Glam = { "isMut": true, "isSigner": false }, + { + "name": "marinadeProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "associatedTokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "solAmount", + "type": "u64" + } + ] + }, + { + "name": "marinadeLiquidUnstake", + "accounts": [ + { + "name": "manager", + "isMut": false, + "isSigner": true + }, + { + "name": "fund", + "isMut": false, + "isSigner": false + }, { "name": "treasury", "isMut": true, "isSigner": false }, { - "name": "fund", + "name": "marinadeState", "isMut": true, "isSigner": false }, { - "name": "marinadeProgram", - "isMut": false, + "name": "msolMint", + "isMut": true, "isSigner": false }, { - "name": "associatedTokenProgram", - "isMut": false, + "name": "liqPoolSolLegPda", + "isMut": true, "isSigner": false }, { - "name": "systemProgram", + "name": "liqPoolMsolLeg", + "isMut": true, + "isSigner": false + }, + { + "name": "treasuryMsolAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "getMsolFrom", + "isMut": true, + "isSigner": false + }, + { + "name": "getMsolFromAuthority", + "isMut": true, + "isSigner": false + }, + { + "name": "marinadeProgram", "isMut": false, "isSigner": false }, @@ -1654,6 +1792,11 @@ export const IDL: Glam = { "name": "tokenProgram", "isMut": false, "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false } ], "args": [ @@ -1672,27 +1815,27 @@ export const IDL: Glam = { "isSigner": true }, { - "name": "ticket", - "isMut": true, + "name": "fund", + "isMut": false, "isSigner": false }, { - "name": "fund", - "isMut": false, + "name": "treasury", + "isMut": true, "isSigner": false }, { - "name": "msolMint", + "name": "ticket", "isMut": true, "isSigner": false }, { - "name": "burnMsolFrom", + "name": "msolMint", "isMut": true, "isSigner": false }, { - "name": "burnMsolAuthority", + "name": "burnMsolFrom", "isMut": true, "isSigner": false }, @@ -1740,10 +1883,6 @@ export const IDL: Glam = { { "name": "ticketBump", "type": "u8" - }, - { - "name": "treasuryBump", - "type": "u8" } ] }, @@ -1761,17 +1900,17 @@ export const IDL: Glam = { "isSigner": false }, { - "name": "ticket", + "name": "treasury", "isMut": true, "isSigner": false }, { - "name": "marinadeState", + "name": "ticket", "isMut": true, "isSigner": false }, { - "name": "transferSolTo", + "name": "marinadeState", "isMut": true, "isSigner": false }, @@ -1806,12 +1945,7 @@ export const IDL: Glam = { "isSigner": false } ], - "args": [ - { - "name": "treasuryBump", - "type": "u8" - } - ] + "args": [] } ], "accounts": [ diff --git a/anchor/tests/glam_staking.spec.ts b/anchor/tests/glam_staking.spec.ts index 1ac90396..482886ff 100644 --- a/anchor/tests/glam_staking.spec.ts +++ b/anchor/tests/glam_staking.spec.ts @@ -14,7 +14,7 @@ describe("glam_staking", () => { const manager = provider.wallet as anchor.Wallet; const program = anchor.workspace.Glam as Program; - let fundPDA, fundBump, treasuryPDA, treasuryBump, sharePDA, shareBump; + let fundPDA, fundBump, fundTreasuryPDA, fundTreasuryBump, sharePDA, shareBump; // marinade setup const marinadeProgram = new PublicKey( @@ -40,8 +40,8 @@ describe("glam_staking", () => { const fundData = await createFundForTest("Glam Fund TEST", "GTST", manager); fundPDA = fundData.fundPDA; fundBump = fundData.fundBump; - treasuryPDA = fundData.treasuryPDA; - treasuryBump = fundData.treasuryBump; + fundTreasuryPDA = fundData.treasuryPDA; + fundTreasuryBump = fundData.treasuryBump; sharePDA = fundData.sharePDA; shareBump = fundData.shareBump; @@ -52,7 +52,7 @@ describe("glam_staking", () => { expect(fund.isActive).toEqual(true); // air drop to treasury and delay 1s for confirmation - await provider.connection.requestAirdrop(treasuryPDA, 100_000_000_000); + await provider.connection.requestAirdrop(fundTreasuryPDA, 100_000_000_000); await sleep(1000); }); @@ -62,7 +62,7 @@ describe("glam_staking", () => { await getOrCreateAssociatedTokenAccount( provider, marinadeState.mSolMintAddress, - treasuryPDA + fundTreasuryPDA ) ).associatedTokenAccountAddress; @@ -78,7 +78,7 @@ describe("glam_staking", () => { liqPoolMsolLegAuthority: await marinadeState.mSolLegAuthority(), liqPoolSolLegPda: await marinadeState.solLeg(), mintTo: treasurymSolAta, - treasury: treasuryPDA, + treasury: fundTreasuryPDA, fund: fundPDA, marinadeProgram }) @@ -90,6 +90,31 @@ describe("glam_staking", () => { } }); + it("Liquid unstake", async () => { + try { + const tx = await program.methods + .marinadeLiquidUnstake(new anchor.BN(1e9)) + .accounts({ + manager: manager.publicKey, + treasury: fundTreasuryPDA, + fund: fundPDA, + marinadeState: marinadeState.marinadeStateAddress, + msolMint: marinadeState.mSolMintAddress, + liqPoolSolLegPda: await marinadeState.solLeg(), + liqPoolMsolLeg: marinadeState.mSolLeg, + getMsolFrom: treasurymSolAta, + getMsolFromAuthority: fundTreasuryPDA, + treasuryMsolAccount: marinadeTreasuryMsol, + marinadeProgram + }) + .rpc({ commitment: "confirmed" }); + console.log("Your transaction signature", tx); + } catch (error) { + console.log("Error", error); + throw error; + } + }); + it("Order unstake", async () => { [ticketPda, ticketBump] = PublicKey.findProgramAddressSync( [Buffer.from("ticket")], @@ -100,14 +125,14 @@ describe("glam_staking", () => { try { const tx = await program.methods - .marinadeDelayedUnstake(new anchor.BN(1e9), ticketBump, treasuryBump) + .marinadeDelayedUnstake(new anchor.BN(1e9), ticketBump) .accounts({ manager: manager.publicKey, fund: fundPDA, + treasury: fundTreasuryPDA, ticket: ticketPda, msolMint: marinadeState.mSolMintAddress, burnMsolFrom: treasurymSolAta, - burnMsolAuthority: treasuryPDA, marinadeState: marinadeState.marinadeStateAddress, reservePda: await marinadeState.reserveAddress(), marinadeProgram @@ -124,21 +149,16 @@ describe("glam_staking", () => { // wait for 30s so that the ticket is ready to be claimed await sleep(30_000); - // const [ticketPda, ticketBump] = PublicKey.findProgramAddressSync( - // [Buffer.from("ticket")], - // program.programId - // ); - console.log("ticketPda", ticketPda.toBase58(), "ticketBump", ticketBump); try { const tx = await program.methods - .marinadeClaim(treasuryBump) + .marinadeClaim() .accounts({ manager: manager.publicKey, fund: fundPDA, + treasury: fundTreasuryPDA, ticket: ticketPda, - transferSolTo: treasuryPDA, marinadeState: marinadeState.marinadeStateAddress, reservePda: await marinadeState.reserveAddress(), marinadeProgram