UNPKG

banx-token-lending-sdk

Version:

Banx Token Lending sdk

1 lines 54.9 kB
import{web3 as e,Program as n,AnchorProvider as t,BN as a}from"@coral-xyz/anchor";import r from"bs58";const o={address:"Banxj7HgkaM1Uwy5kYAAXypMubWMRtJ7Wyf6kqHaFgCq",metadata:{name:"banxTokenLending",version:"0.1.0",spec:"0.1.0",description:"Created with Anchor"},instructions:[{name:"borrowPerpetualLoan",discriminator:[66,13,79,110,9,99,18,194],accounts:[{name:"bondOffer",writable:!0},{name:"lenderVault",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114,95,118,97,117,108,116]},{kind:"account",path:"bondOffer"},{kind:"account",path:"lendingTokenMint"}]}},{name:"bondLoan",writable:!0,pda:{seeds:[{kind:"const",value:[108,111,97,110]},{kind:"account",path:"user"},{kind:"arg",path:"seed"}]}},{name:"user",writable:!0,signer:!0},{name:"rentVault",writable:!0,pda:{seeds:[{kind:"const",value:[114,101,110,116,95,118,97,117,108,116,95,112,114,101,102,105,120]}]}},{name:"market",writable:!0},{name:"marketCollateralVaultTokenAccount",writable:!0},{name:"userCollateralTokenAccount",writable:!0},{name:"userLendingTokenAccount",writable:!0},{name:"lenderVaultLendingTokenAccount",writable:!0},{name:"collateralMint",writable:!0},{name:"lendingTokenMint",writable:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"protocolFeeReceiver",writable:!0,address:"revJ8QJgQ3xCcZ6CMykjsmGMYdg8Pj9WnqgJZBHBwSK"},{name:"protocolFeeReceiverLendingTokenAccount"},{name:"oracle",writable:!0},{name:"tokenProgram",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associatedTokenProgram",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],args:[{name:"seed",type:"u64"},{name:"amountToGetFromOffer",type:"u64"},{name:"collateralToSend",type:"u64"}]},{name:"borrowerRefinance",discriminator:[245,133,59,90,202,63,202,202],accounts:[{name:"newBondOffer",writable:!0},{name:"oldBondOffer",writable:!0},{name:"oldBondLoan",writable:!0},{name:"newBondLoan",writable:!0,pda:{seeds:[{kind:"const",value:[108,111,97,110]},{kind:"account",path:"oldBondLoan"}]}},{name:"newLenderVault",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114,95,118,97,117,108,116]},{kind:"account",path:"newBondOffer"},{kind:"account",path:"lendingTokenMint"}]}},{name:"oldLenderVault",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114,95,118,97,117,108,116]},{kind:"account",path:"oldBondOffer"},{kind:"account",path:"lendingTokenMint"}]}},{name:"user",writable:!0,signer:!0},{name:"rentVault",writable:!0,pda:{seeds:[{kind:"const",value:[114,101,110,116,95,118,97,117,108,116,95,112,114,101,102,105,120]}]}},{name:"market",writable:!0},{name:"userLendingTokenAccount",writable:!0},{name:"oldLenderVaultLendingTokenAccount",writable:!0},{name:"newLenderVaultLendingTokenAccount",writable:!0},{name:"lendingTokenMint",writable:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"protocolFeeReceiver",writable:!0,address:"revJ8QJgQ3xCcZ6CMykjsmGMYdg8Pj9WnqgJZBHBwSK"},{name:"protocolFeeReceiverLendingTokenAccount"},{name:"oracle",writable:!0},{name:"tokenProgram",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associatedTokenProgram",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],args:[{name:"solToRefinance",type:"u64"}]},{name:"createBondOffer",discriminator:[3,25,221,101,91,193,47,69],accounts:[{name:"bondOffer",writable:!0,pda:{seeds:[{kind:"const",value:[98,111,110,100,95,111,102,102,101,114]},{kind:"account",path:"user"},{kind:"arg",path:"seed"}]}},{name:"user",writable:!0,signer:!0},{name:"rentVault",writable:!0,pda:{seeds:[{kind:"const",value:[114,101,110,116,95,118,97,117,108,116,95,112,114,101,102,105,120]}]}},{name:"market",writable:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"}],args:[{name:"seed",type:"u64"},{name:"offerSize",type:"u128"},{name:"loanLiquidationLtv",type:"u32"},{name:"lenderApr",type:"u32"}]},{name:"initializeOrUpdateMarket",discriminator:[52,145,73,185,91,251,214,188],accounts:[{name:"market",writable:!0,pda:{seeds:[{kind:"const",value:[98,97,110,120,95,109,97,114,107,101,116]},{kind:"arg",path:"marketParams.lendingTokenMint"},{kind:"account",path:"collateralMint"}]}},{name:"rentVault",writable:!0,pda:{seeds:[{kind:"const",value:[114,101,110,116,95,118,97,117,108,116,95,112,114,101,102,105,120]}]}},{name:"collateralMint",writable:!0},{name:"user",writable:!0,signer:!0},{name:"collateralVaultTokenAccount",writable:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"tokenProgram",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associatedTokenProgram",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"}],args:[{name:"marketParams",type:{defined:{name:"initializeOrUpdateMarketParams"}}}]},{name:"lenderInstantRefinance",discriminator:[40,37,57,109,57,78,88,41],accounts:[{name:"newBondOffer",writable:!0},{name:"oldBondOffer",writable:!0},{name:"oldBondLoan",writable:!0},{name:"newBondLoan",writable:!0,pda:{seeds:[{kind:"const",value:[108,111,97,110]},{kind:"account",path:"oldBondLoan"}]}},{name:"newLenderVault",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114,95,118,97,117,108,116]},{kind:"account",path:"newBondOffer"},{kind:"account",path:"lendingTokenMint"}]}},{name:"oldLenderVault",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114,95,118,97,117,108,116]},{kind:"account",path:"oldBondOffer"},{kind:"account",path:"lendingTokenMint"}]}},{name:"user",writable:!0,signer:!0},{name:"rentVault",writable:!0,pda:{seeds:[{kind:"const",value:[114,101,110,116,95,118,97,117,108,116,95,112,114,101,102,105,120]}]}},{name:"market",writable:!0},{name:"userLendingTokenAccount",writable:!0},{name:"oldLenderVaultLendingTokenAccount",writable:!0},{name:"newLenderVaultLendingTokenAccount",writable:!0},{name:"lendingTokenMint",writable:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"protocolFeeReceiver",writable:!0,address:"revJ8QJgQ3xCcZ6CMykjsmGMYdg8Pj9WnqgJZBHBwSK"},{name:"protocolFeeReceiverLendingTokenAccount"},{name:"oracle",writable:!0},{name:"tokenProgram",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associatedTokenProgram",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],args:[]},{name:"liquidatePerpetualLoan",discriminator:[122,98,116,58,216,45,255,235],accounts:[{name:"bondOffer",writable:!0},{name:"bondLoan",writable:!0},{name:"market",writable:!0},{name:"user",writable:!0,signer:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"oracle",writable:!0}],args:[]},{name:"refinancePerpetualLoan",discriminator:[158,239,154,119,143,198,43,213],accounts:[{name:"newBondOffer",writable:!0,pda:{seeds:[{kind:"const",value:[98,111,110,100,95,111,102,102,101,114]},{kind:"account",path:"user"},{kind:"arg",path:"seed"}]}},{name:"oldBondOffer",writable:!0},{name:"oldBondLoan",writable:!0},{name:"newBondLoan",writable:!0,pda:{seeds:[{kind:"const",value:[108,111,97,110]},{kind:"account",path:"oldBondLoan"}]}},{name:"newLenderVault",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114,95,118,97,117,108,116]},{kind:"account",path:"user"},{kind:"account",path:"lendingTokenMint"}]}},{name:"oldLenderVault",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114,95,118,97,117,108,116]},{kind:"account",path:"oldBondOffer"},{kind:"account",path:"lendingTokenMint"}]}},{name:"user",writable:!0,signer:!0},{name:"rentVault",writable:!0,pda:{seeds:[{kind:"const",value:[114,101,110,116,95,118,97,117,108,116,95,112,114,101,102,105,120]}]}},{name:"market",writable:!0},{name:"userLendingTokenAccount",writable:!0},{name:"oldLenderVaultLendingTokenAccount",writable:!0},{name:"lendingTokenMint",writable:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"protocolFeeReceiver",writable:!0,address:"revJ8QJgQ3xCcZ6CMykjsmGMYdg8Pj9WnqgJZBHBwSK"},{name:"protocolFeeReceiverLendingTokenAccount"},{name:"tokenProgram",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associatedTokenProgram",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],args:[]},{name:"refinancePerpetualLoanFromOffer",discriminator:[101,94,158,163,216,57,52,130],accounts:[{name:"newBondOffer",writable:!0},{name:"oldBondOffer",writable:!0},{name:"oldBondLoan",writable:!0},{name:"newBondLoan",writable:!0,pda:{seeds:[{kind:"const",value:[108,111,97,110]},{kind:"account",path:"oldBondLoan"}]}},{name:"newLenderVault",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114,95,118,97,117,108,116]},{kind:"account",path:"user"},{kind:"account",path:"lendingTokenMint"}]}},{name:"oldLenderVault",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114,95,118,97,117,108,116]},{kind:"account",path:"oldBondOffer"},{kind:"account",path:"lendingTokenMint"}]}},{name:"user",writable:!0,signer:!0},{name:"rentVault",writable:!0,pda:{seeds:[{kind:"const",value:[114,101,110,116,95,118,97,117,108,116,95,112,114,101,102,105,120]}]}},{name:"market",writable:!0},{name:"userLendingTokenAccount",writable:!0},{name:"oldLenderVaultLendingTokenAccount",writable:!0},{name:"lendingTokenMint",writable:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"protocolFeeReceiver",writable:!0,address:"revJ8QJgQ3xCcZ6CMykjsmGMYdg8Pj9WnqgJZBHBwSK"},{name:"protocolFeeReceiverLendingTokenAccount"},{name:"tokenProgram",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associatedTokenProgram",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"oracle",writable:!0}],args:[]},{name:"removeBondOffer",discriminator:[4,87,235,36,77,82,172,46],accounts:[{name:"bondOffer",writable:!0},{name:"user",writable:!0,signer:!0},{name:"rentVault",writable:!0,pda:{seeds:[{kind:"const",value:[114,101,110,116,95,118,97,117,108,116,95,112,114,101,102,105,120]}]}},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"}],args:[]},{name:"repayPartialPerpetualLoan",discriminator:[138,68,239,156,169,145,218,97],accounts:[{name:"bondOffer",writable:!0},{name:"bondLoan",writable:!0},{name:"newBondLoan",writable:!0,pda:{seeds:[{kind:"const",value:[108,111,97,110]},{kind:"account",path:"bondLoan"}]}},{name:"market",writable:!0},{name:"lenderVault",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114,95,118,97,117,108,116]},{kind:"account",path:"bondOffer"},{kind:"account",path:"lendingTokenMint"}]}},{name:"userLendingTokenAccount",writable:!0},{name:"lenderVaultLendingTokenAccount",writable:!0},{name:"protocolFeeReceiver",writable:!0,address:"revJ8QJgQ3xCcZ6CMykjsmGMYdg8Pj9WnqgJZBHBwSK"},{name:"lendingTokenMint",writable:!0},{name:"user",writable:!0,signer:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"oracle",writable:!0},{name:"protocolFeeReceiverLendingTokenAccount"},{name:"rentVault",writable:!0,pda:{seeds:[{kind:"const",value:[114,101,110,116,95,118,97,117,108,116,95,112,114,101,102,105,120]}]}},{name:"tokenProgram",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associatedTokenProgram",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],args:[{name:"amountToRepay",type:"u64"}]},{name:"repayPerpetualLoan",discriminator:[40,56,164,63,64,14,111,95],accounts:[{name:"bondOffer",writable:!0},{name:"bondLoan",writable:!0},{name:"market",writable:!0,pda:{seeds:[{kind:"const",value:[98,97,110,120,95,109,97,114,107,101,116]},{kind:"account",path:"lendingTokenMint"},{kind:"account",path:"collateralMint"}]}},{name:"lenderVault",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114,95,118,97,117,108,116]},{kind:"account",path:"bondOffer"},{kind:"account",path:"lendingTokenMint"}]}},{name:"marketCollateralVaultTokenAccount",writable:!0},{name:"userCollateralTokenAccount",writable:!0},{name:"userLendingTokenAccount",writable:!0},{name:"lenderVaultLendingTokenAccount",writable:!0},{name:"protocolFeeReceiver",writable:!0,address:"revJ8QJgQ3xCcZ6CMykjsmGMYdg8Pj9WnqgJZBHBwSK"},{name:"collateralMint",writable:!0},{name:"lendingTokenMint",writable:!0},{name:"user",writable:!0,signer:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"oracle",writable:!0},{name:"protocolFeeReceiverLendingTokenAccount"},{name:"rentVault",writable:!0,pda:{seeds:[{kind:"const",value:[114,101,110,116,95,118,97,117,108,116,95,112,114,101,102,105,120]}]}},{name:"tokenProgram",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associatedTokenProgram",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],args:[]},{name:"revertTerminatePerpetualLoan",discriminator:[41,184,161,47,161,211,103,52],accounts:[{name:"bondOffer",writable:!0},{name:"bondLoan",writable:!0},{name:"market",writable:!0},{name:"user",writable:!0,signer:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"}],args:[]},{name:"terminatePerpetualLoan",discriminator:[50,99,124,192,16,106,78,113],accounts:[{name:"bondOffer",writable:!0},{name:"bondLoan",writable:!0},{name:"market",writable:!0},{name:"user",writable:!0,signer:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"oracle",writable:!0}],args:[]},{name:"updateBondOffer",discriminator:[163,8,59,41,141,241,247,80],accounts:[{name:"bondOffer",writable:!0},{name:"user",writable:!0,signer:!0},{name:"market",writable:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"}],args:[{name:"offerSize",type:"u64"},{name:"loanLiquidationLtv",type:"u32"},{name:"lenderApr",type:"u32"}]},{name:"updateRentVault",discriminator:[130,27,191,117,35,2,79,139],accounts:[{name:"rentVault",writable:!0,pda:{seeds:[{kind:"const",value:[114,101,110,116,95,118,97,117,108,116,95,112,114,101,102,105,120]}]}},{name:"user",writable:!0,signer:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"}],args:[{name:"amountToAdd",type:"u64"}]},{name:"updateUserVault",discriminator:[67,191,35,49,146,148,83,238],accounts:[{name:"userVault",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114,95,118,97,117,108,116]},{kind:"account",path:"user"},{kind:"account",path:"lendingTokenMint"}]}},{name:"rentVault",writable:!0,pda:{seeds:[{kind:"const",value:[114,101,110,116,95,118,97,117,108,116,95,112,114,101,102,105,120]}]}},{name:"user",writable:!0,signer:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"userSplTokenAccountUninitialized",writable:!0},{name:"vaultSplTokenAccountUninitialized",writable:!0},{name:"lendingTokenMint",writable:!0},{name:"tokenProgram",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associatedTokenProgram",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],args:[{name:"amount",type:"u128"},{name:"add",type:"bool"}]}],accounts:[{name:"banxMarket",discriminator:[208,67,34,245,192,71,218,77]},{name:"bondLoan",discriminator:[29,12,202,120,154,196,83,225]},{name:"bondOffer",discriminator:[35,250,97,241,107,159,185,150]},{name:"userVault",discriminator:[23,76,96,159,210,10,5,22]}],errors:[{code:6e3,name:"userDoesntHaveAuthority",msg:"UserDoesntHaveAuthority"},{code:6001,name:"wrongSenderTokenAccount",msg:"Wtong sender token account"},{code:6002,name:"marketNotActive",msg:"MarketNotActive"},{code:6003,name:"bondLoanNotActive",msg:"BondLoanNotActive"},{code:6004,name:"offerNotActive",msg:"OfferNotActive"},{code:6005,name:"invalidRentVaultAccount",msg:"InvalidRentVaultAccount"},{code:6006,name:"invalidCollateralMint",msg:"InvalidCollateralMint"},{code:6007,name:"invalidLendingTokenMint",msg:"InvalidLendingTokenMint"},{code:6008,name:"offerLtvExceedLimit",msg:"OfferLtvExceedLimit"},{code:6009,name:"offerLiqLtvExcedLimit",msg:"OfferLiqLtvExceedLimit"},{code:6010,name:"wrongOracleId",msg:"WrongOracleId"},{code:6011,name:"incorrectOfferForLoan",msg:"Incorrect offer for loan"},{code:6012,name:"oldOracle",msg:"Oracle too old"},{code:6013,name:"incorrectLoanStatus",msg:"IncorrectLoanStatus"},{code:6014,name:"terminationFreezeNotReached",msg:"Termination freeze not reached"},{code:6015,name:"incorrectTerminationStatus",msg:"Incorrect termination status"},{code:6016,name:"cantAutoTerminateLoan",msg:"Can't auto terminate loan"},{code:6017,name:"cantLiquidateLoanBefore30Days",msg:"Can't liquidate loan before 30 day termination"},{code:6018,name:"invalidCollateralTokenAccount",msg:"Invalid collateral token account"},{code:6019,name:"invalidRedeemResult",msg:"InvalidRedeemResult"},{code:6020,name:"collateralTransferAccountsNotFound",msg:"CollateralTransferAccountsNotFound"},{code:6021,name:"offerDoesntMatchMarket",msg:"OfferDoesntMatchMarket"},{code:6022,name:"repayCompensationAccountsNotFound",msg:"RepayCompensationAccountsNotFound"}],types:[{name:"banxMarket",serialization:"bytemuck",repr:{kind:"c"},type:{kind:"struct",fields:[{name:"marketAuthority",type:"pubkey"},{name:"collateralTokenMint",type:"pubkey"},{name:"lendingTokenMint",type:"pubkey"},{name:"oraclePriceFeed",type:{array:["u8",32]}},{name:"upfrontFeeBp",type:"u32"},{name:"interestFeeBp",type:"u32"},{name:"oracleDuration",type:"u64"},{name:"marketState",type:"u8"},{name:"collateralDigits",type:"u8"},{name:"oracleFeedType",type:"u8"},{name:"lendingTokenDigits",type:"u8"},{name:"marginOfSafety",type:"u8"},{name:"lookupTable",type:"pubkey"},{name:"placeholder1",type:"pubkey"},{name:"placeholder2",type:"pubkey"},{name:"padding",type:{array:["u8",3]}}]}},{name:"bondLoan",serialization:"bytemuck",repr:{kind:"c"},type:{kind:"struct",fields:[{name:"bondOffer",type:"pubkey"},{name:"lender",type:"pubkey"},{name:"borrower",type:"pubkey"},{name:"collateralTokenAccount",type:"pubkey"},{name:"compoundedProtocolInterest",type:"u64"},{name:"loanAmount",type:"u64"},{name:"feeAmount",type:"u64"},{name:"soldAt",type:"u64"},{name:"redeemedAt",type:"u64"},{name:"currentRemainingLent",type:"u64"},{name:"interestSnapshot",type:"u64"},{name:"partialRepaySnapshot",type:"u64"},{name:"terminationStartedAt",type:"u64"},{name:"lenderOriginalLent",type:"u64"},{name:"lenderFullRepaidAmount",type:"u64"},{name:"borrowerOriginalLent",type:"u64"},{name:"borrowerFullRepaidAmount",type:"u64"},{name:"repaymentCallAmount",type:"u64"},{name:"collateralAmount",type:"u64"},{name:"protocolApr",type:"u32"},{name:"lenderApr",type:"u32"},{name:"terminationFreeze",type:"u32"},{name:"terminationDuration",type:"u32"},{name:"liquidationLtv",type:"u32"},{name:"leverageAmountBp",type:"u32"},{name:"bondLoanState",type:"u8"},{name:"bondLoanType",type:"u8"},{name:"liquidationType",type:"u8"},{name:"redeemResult",type:"u8"},{name:"redeemResultNext",type:"u8"},{name:"placeholder2",type:"pubkey"},{name:"padding",type:{array:["u8",3]}}]}},{name:"bondOffer",serialization:"bytemuck",repr:{kind:"c"},type:{kind:"struct",fields:[{name:"interestClaimedAmount",type:"u64"},{name:"offerCapacity",type:"u64"},{name:"amountInLoans",type:"u64"},{name:"activeLoansAmount",type:"u64"},{name:"lastTransactedAt",type:"u64"},{name:"liquidationLtvBp",type:"u32"},{name:"loanAprBp",type:"u32"},{name:"offerState",type:"u8"},{name:"assetReceiver",type:"pubkey"},{name:"market",type:"pubkey"},{name:"placeholder",type:"pubkey"},{name:"padding",type:{array:["u8",7]}}]}},{name:"initializeOrUpdateMarketParams",type:{kind:"struct",fields:[{name:"upfrontFee",type:"u32"},{name:"interestFee",type:"u32"},{name:"marginOfSafety",type:"u64"},{name:"marketState",type:{defined:{name:"marketState"}}},{name:"lendingTokenMint",type:"pubkey"},{name:"oraclePriceFeed",type:{array:["u8",32]}},{name:"collateralDigits",type:"u8"},{name:"oracleFeedType",type:{defined:{name:"oraclePriceFeedType"}}},{name:"lendingTokenDigits",type:"u8"},{name:"lookupTable",type:"pubkey"},{name:"marketAuthority",type:"pubkey"},{name:"oracleDuration",type:"u64"}]}},{name:"marketState",repr:{kind:"rust"},type:{kind:"enum",variants:[{name:"none"},{name:"initializing"},{name:"available"},{name:"closed"}]}},{name:"oraclePriceFeedType",repr:{kind:"rust"},type:{kind:"enum",variants:[{name:"none"},{name:"pyth"},{name:"switchboard"}]}},{name:"userVault",serialization:"bytemuck",repr:{kind:"c"},type:{kind:"struct",fields:[{name:"user",type:"pubkey"},{name:"lendingTokenMint",type:"pubkey"},{name:"reservesAmount",type:"u128"},{name:"liquidityInLoansAmount",type:"u128"},{name:"interestRewardsAmount",type:"u128"},{name:"rentRewards",type:"u64"},{name:"fundsInCurrentEpoch",type:"u64"},{name:"fundsInNextEpoch",type:"u64"},{name:"lastCalculatedSlot",type:"u64"},{name:"lastCalculatedTimestamp",type:"u64"},{name:"rewardsToHarvest",type:"u64"},{name:"rewardsHarvested",type:"u64"},{name:"lastTransactedAt",type:"u64"},{name:"stakingType",type:"u8"},{name:"userVaultState",type:"u8"},{name:"padding",type:{array:["u8",14]}}]}}]};function i(e){return{publicKey:e.publicKey,...e.account}}class c{constructor(e){this.payer=e}static local(){const n=new e.Keypair;return new c(n)}get publicKey(){return this.payer.publicKey}async signTransaction(e){return e}async signAllTransactions(e){return e}}const s=new c(e.Keypair.generate());function d(e){return new n(o,new t(e,s))}var l=Object.freeze({__proto__:null,ANCHOR_WALLET_PLACEHOLDER:s,getBanxAnchorProgram:d,mergePublicKeyAndAccountData:i});function u(e){return function(e,n=8){const t=e.toArray("le",n),a=new Uint8Array(t);return r.encode(a)}(new a(e),1)}const m=new e.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new e.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const f=new e.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new e.PublicKey("So11111111111111111111111111111111111111112"),new e.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");const b=new TextEncoder;function y(e,n){if(Object.keys(e||{}).length>4)throw new Error("RPC filters amount limit reached. Max: 4");return Object.entries(e||{}).map((([e,t])=>{const a=n?.[e]||null;if(!a)throw new Error(`Filter ${e} doesn't match any offsetAndConvertor value`);return function(e,n){const[t,a]=n;return{memcmp:{offset:t,bytes:a(e)}}}(t,a)}))}function g({walletAddress:n,tokenMint:t,tokenProgramId:a=m}){return e.PublicKey.findProgramAddressSync([n.toBuffer(),a.toBuffer(),t.toBuffer()],f)[0]}const p={offerState:[56,u],assetReceiver:[57,e=>e.toBase58()],market:[89,e=>e.toBase58()]};const k="rent_vault_prefix",w="loan",P="user_vault",T="bond_offer",A=new e.PublicKey("revJ8QJgQ3xCcZ6CMykjsmGMYdg8Pj9WnqgJZBHBwSK"),L=new e.PublicKey("pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT");async function M({accounts:n,args:t,connection:r}){const o=d(r),i=[],c=new a(Math.floor(1e6*Math.random())),[s]=e.PublicKey.findProgramAddressSync([b.encode(k)],o.programId),[l]=e.PublicKey.findProgramAddressSync([b.encode(T),n.userPubkey.toBuffer(),b.encode(c.toString())],o.programId),u=await o.methods.createBondOffer(c,t.offerCapacity,t.liquidationLtvBp,t.loanAprBp).accountsStrict({rentVault:s,user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,bondOffer:l,market:n.market}).instruction();return i.push(u),{mutatedAccounts:{bondOffer:l},instructions:i,signers:[]}}async function B({connection:e,args:n,walletPublicKey:t,accounts:a}){const{banxMarket:r}=a;return M({connection:e,args:n,accounts:{userPubkey:t,market:r.struct.publicKey}})}async function S({accounts:n,connection:t}){const a=d(t),r=[],[o]=e.PublicKey.findProgramAddressSync([b.encode(k)],a.programId),i=await a.methods.removeBondOffer().accountsStrict({user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,bondOffer:n.bondOffer,rentVault:o}).instruction();return r.push(i),{mutatedAccounts:{bondOffer:n.bondOffer},instructions:r,signers:[]}}async function v({connection:e,walletPublicKey:n,accounts:t}){const{bondOffer:a}=t;return S({connection:e,accounts:{userPubkey:n,bondOffer:a.struct.publicKey}})}async function h({accounts:n,args:t,connection:a}){const r=d(a),o=[],i=await r.methods.updateBondOffer(t.offerCapacity,t.liquidationLtvBp,t.loanAprBp).accountsStrict({user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,bondOffer:n.bondOffer,market:n.market}).instruction();return o.push(i),{mutatedAccounts:{bondOffer:n.bondOffer},instructions:o,signers:[]}}async function O({connection:e,args:n,walletPublicKey:t,accounts:a}){const{banxMarket:r,bondOffer:o}=a;return h({connection:e,args:{...o.struct,...n},accounts:{userPubkey:t,bondOffer:o.struct.publicKey,market:r.struct.publicKey}})}var R,K;function x(n,t){if(n===K.None)return e.PublicKey.default;if(n===K.Switchboard)return new e.PublicKey(t);if(n===K.Pyth){const n=new Uint8Array(2),a=new Uint8Array(t),[r]=e.PublicKey.findProgramAddressSync([n,a],L);return r}throw new Error("OracleFeedType not supported")}async function I({accounts:n,connection:t,args:r}){const o=d(t),i=[],c=new a(Math.floor(1e6*Math.random())),[s]=e.PublicKey.findProgramAddressSync([b.encode(k)],o.programId),[l]=e.PublicKey.findProgramAddressSync([b.encode(w),n.userPubkey.toBuffer(),b.encode(c.toString())],o.programId),[u]=e.PublicKey.findProgramAddressSync([b.encode(P),n.userPubkey.toBuffer(),n.lendingTokenMint.toBuffer()],o.programId),y=g({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),p=g({walletAddress:u,tokenMint:n.lendingTokenMint}),T=g({walletAddress:A,tokenMint:n.lendingTokenMint}),L=g({walletAddress:n.market,tokenMint:n.collateralMint}),M=g({walletAddress:u,tokenMint:n.collateralMint}),B=await o.methods.borrowPerpetualLoan(c,r.amountToBorrow,r.amountOfCollateralToSend).accountsStrict({rentVault:s,user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,bondOffer:n.bondOffer,market:n.market,bondLoan:l,lendingTokenMint:n.lendingTokenMint,lenderVault:u,userCollateralTokenAccount:M,collateralMint:n.collateralMint,protocolFeeReceiver:A,protocolFeeReceiverLendingTokenAccount:T,oracle:n.oracle,tokenProgram:m,associatedTokenProgram:f,marketCollateralVaultTokenAccount:L,userLendingTokenAccount:y,lenderVaultLendingTokenAccount:p}).instruction();return i.push(B),{mutatedAccounts:{bondOffer:n.bondOffer,bondLoan:l},instructions:i,signers:[]}}async function V({args:e,connection:n,walletPublicKey:t,accounts:a}){const{bondOffer:r,banxMarket:o}=a,i=x(o.getOraclePriceFeedType(),o.struct.oraclePriceFeed);return I({args:{amountOfCollateralToSend:e.amountOfCollateralToSend,amountToBorrow:e.amountToBorrow},connection:n,accounts:{bondOffer:r.struct.publicKey,userPubkey:t,market:o.struct.publicKey,lender:r.struct.assetReceiver,lendingTokenMint:o.struct.lendingTokenMint,collateralMint:o.struct.collateralTokenMint,oracle:i}})}!function(e){e[e.None=0]="None",e[e.Initializing=1]="Initializing",e[e.Available=2]="Available",e[e.Closed=3]="Closed"}(R||(R={})),function(e){e[e.None=0]="None",e[e.Pyth=1]="Pyth",e[e.Switchboard=2]="Switchboard"}(K||(K={}));class C{constructor(e){this.struct=e}static fromSerialized(n){return new C(function(n){return{...n,publicKey:new e.PublicKey(n.publicKey),interestClaimedAmount:new a(n.interestClaimedAmount),offerCapacity:new a(n.offerCapacity),amountInLoans:new a(n.amountInLoans),activeLoansAmount:new a(n.activeLoansAmount),lastTransactedAt:new a(n.lastTransactedAt),assetReceiver:new e.PublicKey(n.assetReceiver),market:new e.PublicKey(n.market),placeholder:new e.PublicKey(n.placeholder)}}(n))}serialize(){return e=this.struct,{...e,publicKey:e.publicKey.toBase58(),interestClaimedAmount:e.interestClaimedAmount.toString(),offerCapacity:e.offerCapacity.toString(),amountInLoans:e.amountInLoans.toString(),activeLoansAmount:e.activeLoansAmount.toString(),lastTransactedAt:e.lastTransactedAt.toString(),assetReceiver:e.assetReceiver.toBase58(),market:e.market.toBase58(),placeholder:e.placeholder.toBase58()};var e}static async fetch(e,n){const t=await async function(e,n){const t=d(e),a=await t.account.bondOffer.fetch(n);return a?{publicKey:n,...a}:null}(e,n);return t?new C(t):null}static async fetchMultiple(e,n){const t=await async function(e,n){const t=d(e);return(await t.account.bondOffer.fetchMultiple(n)).map(((e,t)=>e?{publicKey:n[t],...e}:null)).filter((e=>null!==e))}(e,n);return t.map((e=>new C(e)))}static async fetchAll(e,n){const t=await async function(e,n){const t=y(n||{},p),a=d(e);return(await a.account.bondOffer.all(t)).map(i)}(e,n);return t.map((e=>new C(e)))}getSize(){return this.struct.offerCapacity}getState(){return this.struct.offerState}getMaxMultiplier(){}getMaxCollateralToReceive(){}static async getCreateIxns(e,n){const{offerCapacity:t,liquidationLtvBp:a,loanAprBp:r,banxMarket:o,walletPublicKey:i}=e;return B({accounts:{banxMarket:o},connection:n,walletPublicKey:i,args:{offerCapacity:t,liquidationLtvBp:a,loanAprBp:r}})}async getRemoveIxns(e,n){const{walletPublicKey:t}=e;return v({accounts:{bondOffer:this},connection:n,walletPublicKey:t})}async getUpdateIxns(e,n){const{walletPublicKey:t,banxMarket:a,offerCapacity:r,liquidationLtvBp:o,loanAprBp:i}=e;return O({accounts:{bondOffer:this,banxMarket:a},args:{offerCapacity:r,liquidationLtvBp:o,loanAprBp:i},connection:n,walletPublicKey:t})}async getBorrowIxns(e,n){const{walletPublicKey:t,banxMarket:a,amountOfCollateralToSend:r,amountToBorrow:o}=e;return V({accounts:{bondOffer:this,banxMarket:a},args:{amountOfCollateralToSend:r,amountToBorrow:o},connection:n,walletPublicKey:t})}}const F={collateralTokenMint:[40,e=>e.toBase58()],lendingTokenMint:[72,e=>e.toBase58()],marketState:[152,u],oracleFeedType:[153,u]};async function N({accounts:n,connection:t,args:r}){const o=d(t),i=[],c=g({walletAddress:n.userPubkey,tokenMint:r.collateralTokenMint}),[s]=e.PublicKey.findProgramAddressSync([b.encode("banx_market"),r.lendingTokenMint.toBuffer(),r.collateralTokenMint.toBuffer()],o.programId),[l]=e.PublicKey.findProgramAddressSync([b.encode(k)],o.programId),u=await o.methods.initializeOrUpdateMarket({upfrontFee:r.upfrontFeeBp,interestFee:r.interestFeeBp,marginOfSafety:new a(r.marginOfSafety),marketState:{available:{}},lendingTokenMint:r.lendingTokenMint,oraclePriceFeed:r.oraclePriceFeed,collateralDigits:r.collateralDigits,oracleFeedType:{switchboard:{}},lendingTokenDigits:r.lendingTokenDigits,lookupTable:r.lookupTable,marketAuthority:r.marketAuthority,oracleDuration:r.oracleDuration}).accountsStrict({collateralMint:r.collateralTokenMint,collateralVaultTokenAccount:c,rentVault:l,market:s,user:n.userPubkey,systemProgram:e.SystemProgram.programId,tokenProgram:m,associatedTokenProgram:f,rent:e.SYSVAR_RENT_PUBKEY}).instruction();return i.push(u),{mutatedAccounts:{banxMarket:s},instructions:i,signers:[]}}async function E({args:e,accounts:n,connection:t,walletPublicKey:a}){return N({args:{...n.banxMarket.struct,...e},connection:t,accounts:{userPubkey:a}})}class q{constructor(e){this.struct=e}static fromSerialized(n){return new q(function(n){return{...n,publicKey:new e.PublicKey(n.publicKey),marketAuthority:new e.PublicKey(n.marketAuthority),collateralTokenMint:new e.PublicKey(n.collateralTokenMint),lendingTokenMint:new e.PublicKey(n.lendingTokenMint),oracleDuration:new a(n.oracleDuration),lookupTable:new e.PublicKey(n.lookupTable),placeholder1:new e.PublicKey(n.placeholder1),placeholder2:new e.PublicKey(n.placeholder2)}}(n))}serialize(){return e=this.struct,{...e,publicKey:e.publicKey.toBase58(),marketAuthority:e.marketAuthority.toBase58(),collateralTokenMint:e.collateralTokenMint.toBase58(),lendingTokenMint:e.lendingTokenMint.toBase58(),oracleDuration:e.oracleDuration.toString(),lookupTable:e.lookupTable.toBase58(),placeholder1:e.placeholder1.toBase58(),placeholder2:e.placeholder2.toBase58()};var e}static async fetch(e,n){const t=await async function(e,n){const t=d(e),a=await t.account.banxMarket.fetch(n);return a?{publicKey:n,...a}:null}(e,n);return t?new q(t):null}static async fetchMultiple(e,n){const t=await async function(e,n){const t=d(e);return(await t.account.banxMarket.fetchMultiple(n)).map(((e,t)=>e?{publicKey:n[t],...e}:null)).filter((e=>null!==e))}(e,n);return t.map((e=>new q(e)))}static async fetchAll(e,n){const t=await async function(e,n){const t=y(n||{},F),a=d(e);return(await a.account.banxMarket.all(t)).map(i)}(e,n);return t.map((e=>new q(e)))}getState(){return this.struct.marketState}getOraclePriceFeedType(){return this.struct.oracleFeedType}async getUpdateIxns(e,n){const{walletPublicKey:t,...a}=e;return E({accounts:{banxMarket:this},walletPublicKey:t,connection:n,args:a})}}const J={user:[8,e=>e.toBase58()],lendingTokenMint:[40,e=>e.toBase58()],stakingType:[152,u],userVaultState:[153,u]};async function _({args:n,accounts:t,connection:a}){const r=d(a),o=[],[i]=e.PublicKey.findProgramAddressSync([b.encode(P),t.userPubkey.toBuffer(),t.lendingTokenMint.toBuffer()],r.programId),c=g({walletAddress:t.userPubkey,tokenMint:t.lendingTokenMint}),s=g({walletAddress:i,tokenMint:t.lendingTokenMint}),[l]=e.PublicKey.findProgramAddressSync([b.encode(k)],r.programId),u=await r.methods.updateUserVault(n.amount,"add"===n.mode).accountsStrict({rentVault:l,user:t.userPubkey,systemProgram:e.SystemProgram.programId,tokenProgram:m,associatedTokenProgram:f,rent:e.SYSVAR_RENT_PUBKEY,userVault:i,lendingTokenMint:t.lendingTokenMint,userSplTokenAccountUninitialized:c,vaultSplTokenAccountUninitialized:s}).instruction();return o.push(u),{mutatedAccounts:{userVault:i},instructions:o,signers:[]}}async function W({connection:e,args:n,accounts:t}){const{userVault:a,banxMarket:r}=t;return _({args:n,connection:e,accounts:{userPubkey:a.struct.user,lendingTokenMint:r.struct.lendingTokenMint}})}class U{constructor(e){this.struct=e}static fromSerialized(n){return new U(function(n){return{...n,publicKey:new e.PublicKey(n.publicKey),user:new e.PublicKey(n.user),lendingTokenMint:new e.PublicKey(n.lendingTokenMint),reservesAmount:new a(n.reservesAmount),liquidityInLoansAmount:new a(n.liquidityInLoansAmount),interestRewardsAmount:new a(n.interestRewardsAmount),rentRewards:new a(n.rentRewards),fundsInCurrentEpoch:new a(n.fundsInCurrentEpoch),fundsInNextEpoch:new a(n.fundsInNextEpoch),lastCalculatedSlot:new a(n.lastCalculatedSlot),lastCalculatedTimestamp:new a(n.lastCalculatedTimestamp),rewardsToHarvest:new a(n.rewardsToHarvest),rewardsHarvested:new a(n.rewardsHarvested),lastTransactedAt:new a(n.lastTransactedAt)}}(n))}serialize(){return e=this.struct,{...e,publicKey:e.publicKey.toBase58(),user:e.user.toBase58(),lendingTokenMint:e.lendingTokenMint.toBase58(),reservesAmount:e.reservesAmount.toString(),liquidityInLoansAmount:e.liquidityInLoansAmount.toString(),interestRewardsAmount:e.interestRewardsAmount.toString(),rentRewards:e.rentRewards.toString(),fundsInCurrentEpoch:e.fundsInCurrentEpoch.toString(),fundsInNextEpoch:e.fundsInNextEpoch.toString(),lastCalculatedSlot:e.lastCalculatedSlot.toString(),lastCalculatedTimestamp:e.lastCalculatedTimestamp.toString(),rewardsToHarvest:e.rewardsToHarvest.toString(),rewardsHarvested:e.rewardsHarvested.toString(),lastTransactedAt:e.lastTransactedAt.toString()};var e}static async fetch(e,n){const t=await async function(e,n){const t=d(e),a=await t.account.userVault.fetch(n);return a?{publicKey:n,...a}:null}(e,n);return t?new U(t):null}static async fetchMultiple(e,n){const t=await async function(e,n){const t=d(e);return(await t.account.userVault.fetchMultiple(n)).map(((e,t)=>e?{publicKey:n[t],...e}:null)).filter((e=>null!==e))}(e,n);return t.map((e=>new U(e)))}static async fetchAll(e,n){const t=await async function(e,n){const t=y(n||{},J),a=d(e);return(await a.account.userVault.all(t)).map(i)}(e,n);return t.map((e=>new U(e)))}getState(){return this.struct.userVaultState}async getUpdateIxns(e,n){const{amount:t,mode:a,banxMarket:r}=e;return W({accounts:{userVault:this,banxMarket:r},connection:n,args:{amount:t,mode:a}})}}const z={bondOffer:[8,e=>e.toBase58()],lender:[40,e=>e.toBase58()],borrower:[72,e=>e.toBase58()],bondLoanState:[280,u],liquidationType:[281,u],redeemResult:[282,u],redeemResultNext:[284,u]};async function D({accounts:n,connection:t}){const a=d(t),r=[],[o]=e.PublicKey.findProgramAddressSync([b.encode(k)],a.programId),[i]=e.PublicKey.findProgramAddressSync([b.encode(P),n.userPubkey.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),c=g({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),s=g({walletAddress:i,tokenMint:n.lendingTokenMint}),l=g({walletAddress:A,tokenMint:n.lendingTokenMint}),u=g({walletAddress:n.market,tokenMint:n.collateralMint}),y=g({walletAddress:i,tokenMint:n.collateralMint}),p=await a.methods.repayPerpetualLoan().accountsStrict({rentVault:o,user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,bondOffer:n.bondOffer,market:n.market,bondLoan:n.bondLoan,lendingTokenMint:n.lendingTokenMint,lenderVault:i,userCollateralTokenAccount:y,collateralMint:n.collateralMint,protocolFeeReceiver:A,protocolFeeReceiverLendingTokenAccount:l,oracle:n.oracle,tokenProgram:m,associatedTokenProgram:f,marketCollateralVaultTokenAccount:u,userLendingTokenAccount:c,lenderVaultLendingTokenAccount:s}).instruction();return r.push(p),{mutatedAccounts:{bondOffer:n.bondOffer,bondLoan:n.bondLoan},instructions:r,signers:[]}}async function G({connection:e,walletPublicKey:n,accounts:t}){const{bondOffer:a,banxMarket:r}=t,o=x(r.getOraclePriceFeedType(),r.struct.oraclePriceFeed);return D({connection:e,accounts:{bondLoan:a.struct.publicKey,bondOffer:a.struct.publicKey,userPubkey:n,market:r.struct.publicKey,collateralMint:r.struct.collateralTokenMint,lendingTokenMint:r.struct.lendingTokenMint,oracle:o}})}async function H({args:n,accounts:t,connection:a}){const r=d(a),o=[],[i]=e.PublicKey.findProgramAddressSync([b.encode(k)],r.programId),[c]=e.PublicKey.findProgramAddressSync([b.encode(w),t.bondLoan.toBuffer()],r.programId),[s]=e.PublicKey.findProgramAddressSync([b.encode(P),t.userPubkey.toBuffer(),t.lendingTokenMint.toBuffer()],r.programId),l=g({walletAddress:t.userPubkey,tokenMint:t.lendingTokenMint}),u=g({walletAddress:s,tokenMint:t.lendingTokenMint}),y=g({walletAddress:A,tokenMint:t.lendingTokenMint}),p=await r.methods.repayPartialPerpetualLoan(n.amountToRepay).accountsStrict({rentVault:i,user:t.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,bondOffer:t.bondOffer,market:t.market,bondLoan:t.bondLoan,lendingTokenMint:t.lendingTokenMint,lenderVault:s,protocolFeeReceiver:A,protocolFeeReceiverLendingTokenAccount:y,oracle:t.oracle,tokenProgram:m,associatedTokenProgram:f,userLendingTokenAccount:l,lenderVaultLendingTokenAccount:u,newBondLoan:c}).instruction();return o.push(p),{mutatedAccounts:{bondOffer:t.bondOffer,prevBondLoan:t.bondLoan,newBondLoan:c},instructions:o,signers:[]}}async function Q({args:e,connection:n,walletPublicKey:t,accounts:a}){const{bondOffer:r,banxMarket:o}=a,i=x(o.getOraclePriceFeedType(),o.struct.oraclePriceFeed);return H({args:e,connection:n,accounts:{bondLoan:r.struct.publicKey,bondOffer:r.struct.publicKey,userPubkey:t,market:o.struct.publicKey,collateralMint:o.struct.collateralTokenMint,lendingTokenMint:o.struct.lendingTokenMint,oracle:i}})}async function Y({accounts:n,connection:t}){const a=d(t),r=[];return r.push(await a.methods.terminatePerpetualLoan().accountsStrict({user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,market:n.market,bondLoan:n.bondLoan,bondOffer:n.bondOffer,oracle:n.oracle}).instruction()),{mutatedAccounts:{bondLoan:n.bondLoan,bondOffer:n.bondOffer},instructions:r,signers:[]}}async function Z({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,banxMarket:r}=t,o=x(r.getOraclePriceFeedType(),r.struct.oraclePriceFeed);return Y({connection:e,accounts:{bondLoan:a.struct.publicKey,bondOffer:a.struct.bondOffer,lender:a.struct.lender,lendingTokenMint:r.struct.lendingTokenMint,market:r.struct.publicKey,oracle:o,userPubkey:n}})}async function j({accounts:n,connection:t}){const a=d(t),r=[];return r.push(await a.methods.revertTerminatePerpetualLoan().accountsStrict({user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,market:n.market,bondLoan:n.bondLoan,bondOffer:n.bondOffer}).instruction()),{mutatedAccounts:{bondLoan:n.bondLoan,bondOffer:n.bondOffer},instructions:r,signers:[]}}async function X({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,banxMarket:r}=t;return j({connection:e,accounts:{bondLoan:a.struct.publicKey,bondOffer:a.struct.bondOffer,userPubkey:n,lender:a.struct.lender,market:r.struct.publicKey}})}async function $({accounts:n,connection:t,args:a}){const r=d(t),o=[],[i]=e.PublicKey.findProgramAddressSync([b.encode(k)],r.programId),[c]=e.PublicKey.findProgramAddressSync([b.encode(P),n.newLender.toBuffer(),n.lendingTokenMint.toBuffer()],r.programId),[s]=e.PublicKey.findProgramAddressSync([b.encode(P),n.oldLender.toBuffer(),n.lendingTokenMint.toBuffer()],r.programId),[l]=e.PublicKey.findProgramAddressSync([b.encode(w),n.oldBondLoan.toBuffer()],r.programId),u=g({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),y=g({walletAddress:s,tokenMint:n.lendingTokenMint}),p=g({walletAddress:c,tokenMint:n.lendingTokenMint}),T=g({walletAddress:A,tokenMint:n.lendingTokenMint}),L=await r.methods.borrowerRefinance(a.amountToRefinance).accountsStrict({rentVault:i,user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,market:n.market,lendingTokenMint:n.lendingTokenMint,protocolFeeReceiver:A,protocolFeeReceiverLendingTokenAccount:T,tokenProgram:m,associatedTokenProgram:f,userLendingTokenAccount:u,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,oldBondLoan:n.oldBondLoan,newBondLoan:l,newLenderVault:c,oldLenderVault:s,oldLenderVaultLendingTokenAccount:y,newLenderVaultLendingTokenAccount:p,oracle:n.oracle}).instruction();return o.push(L),{mutatedAccounts:{newBondLoan:l,oldBondLoan:n.oldBondLoan,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,newLenderVault:c,oldLenderVault:s},instructions:o,signers:[]}}async function ee({args:e,connection:n,walletPublicKey:t,accounts:a}){const{bondLoan:r,bondOffer:o,banxMarket:i}=a,c=x(i.getOraclePriceFeedType(),i.struct.oraclePriceFeed);return $({args:e,connection:n,accounts:{lendingTokenMint:i.struct.lendingTokenMint,market:i.struct.publicKey,oracle:c,oldBondOffer:r.struct.bondOffer,oldBondLoan:r.struct.publicKey,oldLender:r.struct.lender,newBondOffer:o.struct.publicKey,newLender:o.struct.assetReceiver,userPubkey:t}})}async function ne({accounts:n,connection:t}){const a=d(t),r=[],[o]=e.PublicKey.findProgramAddressSync([b.encode(k)],a.programId),[i]=e.PublicKey.findProgramAddressSync([b.encode(P),n.newLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[c]=e.PublicKey.findProgramAddressSync([b.encode(P),n.oldLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[s]=e.PublicKey.findProgramAddressSync([b.encode(w),n.oldBondLoan.toBuffer()],a.programId),l=g({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),u=g({walletAddress:c,tokenMint:n.lendingTokenMint}),y=g({walletAddress:i,tokenMint:n.lendingTokenMint}),p=g({walletAddress:A,tokenMint:n.lendingTokenMint}),T=await a.methods.lenderInstantRefinance().accountsStrict({rentVault:o,user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,market:n.market,lendingTokenMint:n.lendingTokenMint,protocolFeeReceiver:A,protocolFeeReceiverLendingTokenAccount:p,tokenProgram:m,associatedTokenProgram:f,userLendingTokenAccount:l,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,oldBondLoan:n.oldBondLoan,newBondLoan:s,newLenderVault:i,oldLenderVault:c,oldLenderVaultLendingTokenAccount:u,newLenderVaultLendingTokenAccount:y,oracle:n.oracle}).instruction();return r.push(T),{mutatedAccounts:{newBondLoan:s,oldBondLoan:n.oldBondLoan,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,newLenderVault:i,oldLenderVault:c},instructions:r,signers:[]}}async function te({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,bondOffer:r,banxMarket:o}=t,i=x(o.getOraclePriceFeedType(),o.struct.oraclePriceFeed);return ne({connection:e,accounts:{lendingTokenMint:o.struct.lendingTokenMint,market:o.struct.publicKey,oracle:i,oldBondOffer:a.struct.bondOffer,oldBondLoan:a.struct.publicKey,oldLender:a.struct.lender,newBondOffer:r.struct.publicKey,newLender:r.struct.assetReceiver,userPubkey:n}})}async function ae({accounts:n,connection:t}){const a=d(t),r=[],[o]=e.PublicKey.findProgramAddressSync([b.encode(k)],a.programId),[i]=e.PublicKey.findProgramAddressSync([b.encode(P),n.newLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[c]=e.PublicKey.findProgramAddressSync([b.encode(P),n.oldLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[s]=e.PublicKey.findProgramAddressSync([b.encode(w),n.oldBondLoan.toBuffer()],a.programId),l=g({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),u=g({walletAddress:c,tokenMint:n.lendingTokenMint}),y=g({walletAddress:A,tokenMint:n.lendingTokenMint}),p=await a.methods.refinancePerpetualLoanFromOffer().accountsStrict({rentVault:o,user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,market:n.market,lendingTokenMint:n.lendingTokenMint,protocolFeeReceiver:A,protocolFeeReceiverLendingTokenAccount:y,tokenProgram:m,associatedTokenProgram:f,userLendingTokenAccount:l,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,oldBondLoan:n.oldBondLoan,newBondLoan:s,newLenderVault:i,oldLenderVault:c,oldLenderVaultLendingTokenAccount:u,oracle:n.oracle}).instruction();return r.push(p),{mutatedAccounts:{newBondLoan:s,oldBondLoan:n.oldBondLoan,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,newLenderVault:i,oldLenderVault:c},instructions:r,signers:[]}}async function re({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,bondOffer:r,banxMarket:o}=t,i=x(o.getOraclePriceFeedType(),o.struct.oraclePriceFeed);return ae({connection:e,accounts:{lendingTokenMint:o.struct.lendingTokenMint,market:o.struct.publicKey,oracle:i,oldBondOffer:a.struct.bondOffer,oldBondLoan:a.struct.publicKey,oldLender:a.struct.lender,newBondOffer:r.struct.publicKey,newLender:r.struct.assetReceiver,userPubkey:n}})}async function oe({accounts:n,connection:t}){const r=d(t),o=[],i=new a(Math.floor(1e6*Math.random())),[c]=e.PublicKey.findProgramAddressSync([b.encode(k)],r.programId),[s]=e.PublicKey.findProgramAddressSync([b.encode(P),n.newLender.toBuffer(),n.lendingTokenMint.toBuffer()],r.programId),[l]=e.PublicKey.findProgramAddressSync([b.encode(P),n.oldLender.toBuffer(),n.lendingTokenMint.toBuffer()],r.programId),[u]=e.PublicKey.findProgramAddressSync([b.encode(w),n.oldBondLoan.toBuffer()],r.programId),[y]=e.PublicKey.findProgramAddressSync([b.encode(T),n.userPubkey.toBuffer(),b.encode(i.toString())],r.programId),p=g({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),L=g({walletAddress:l,tokenMint:n.lendingTokenMint}),M=g({walletAddress:A,tokenMint:n.lendingTokenMint}),B=await r.methods.refinancePerpetualLoan().accountsStrict({rentVault:c,user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,market:n.market,lendingTokenMint:n.lendingTokenMint,protocolFeeReceiver:A,protocolFeeReceiverLendingTokenAccount:M,tokenProgram:m,associatedTokenProgram:f,userLendingTokenAccount:p,newBondOffer:y,oldBondOffer:n.oldBondOffer,oldBondLoan:n.oldBondLoan,newBondLoan:u,newLenderVault:s,oldLenderVault:l,oldLenderVaultLendingTokenAccount:L}).instruction();return o.push(B),{mutatedAccounts:{newBondLoan:u,oldBondLoan:n.oldBondLoan,newBondOffer:y,oldBondOffer:n.oldBondOffer,newLenderVault:s,oldLenderVault:l},instructions:o,signers:[]}}async function ie({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,banxMarket:r}=t;return oe({connection:e,accounts:{lendingTokenMint:r.struct.lendingTokenMint,market:r.struct.publicKey,oldBondOffer:a.struct.bondOffer,oldBondLoan:a.struct.publicKey,oldLender:a.struct.lender,newLender:n,userPubkey:n}})}class ce{constructor(e){this.struct=e}static fromSerialized(n){return new ce(function(n){return{...n,publicKey:new e.PublicKey(n.publicKey),bondOffer:new e.PublicKey(n.bondOffer),lender:new e.PublicKey(n.lender),borrower:new e.PublicKey(n.borrower),collateralTokenAccount:new e.PublicKey(n.collateralTokenAccount),compoundedProtocolInterest:new a(n.compoundedProtocolInterest),loanAmount:new a(n.loanAmount),feeAmount:new a(n.feeAmount),soldAt:new a(n.soldAt),redeemedAt:new a(n.redeemedAt),currentRemainingLent:new a(n.currentRemainingLent),interestSnapshot:new a(n.interestSnapshot),partialRepaySnapshot:new a(n.partialRepaySnapshot),terminationStartedAt:new a(n.terminationStartedAt),lenderOriginalLent:new a(n.lenderOriginalLent),lenderFullRepaidAmount:new a(n.lenderFullRepaidAmount),borrowerOriginalLent:new a(n.borrowerOriginalLent),borrowerFullRepaidAmount:new a(n.borrowerFullRepaidAmount),repaymentCallAmount:new a(n.repaymentCallAmount),collateralAmount:new a(n.collateralAmount),placeholder2:new e.PublicKey(n.placeholder2)}}(n))}serialize(){return e=this.struct,{...e,publicKey:e.publicKey.toBase58(),bondOffer:e.bondOffer.toBase58(),lender:e.lender.toBase58(),borrower:e.borrower.toBase58(),collateralTokenAccount:e.collateralTokenAccount.toBase58(),compoundedProtocolInterest:e.compoundedProtocolInterest.toString(),loanAmount:e.loanAmount.toString(),feeAmount:e.feeAmount.toString(),soldAt:e.soldAt.toString(),redeemedAt:e.redeemedAt.toString(),currentRemainingLent:e.currentRemainingLent.toString(),interestSnapshot:e.interestSnapshot.toString(),partialRepaySnapshot:e.pa