UNPKG

banx-token-lending-sdk

Version:

Banx Token Lending sdk

1 lines 55.9 kB
"use strict";var e=require("@coral-xyz/anchor"),n=require("bs58");const t={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 a(e){return{publicKey:e.publicKey,...e.account}}class r{constructor(e){this.payer=e}static local(){const n=new e.web3.Keypair;return new r(n)}get publicKey(){return this.payer.publicKey}async signTransaction(e){return e}async signAllTransactions(e){return e}}const o=new r(e.web3.Keypair.generate());function i(n){return new e.Program(t,new e.AnchorProvider(n,o))}var c=Object.freeze({__proto__:null,ANCHOR_WALLET_PLACEHOLDER:o,getBanxAnchorProgram:i,mergePublicKeyAndAccountData:a});function s(t){return function(e,t=8){const a=e.toArray("le",t),r=new Uint8Array(a);return n.encode(r)}(new e.BN(t),1)}const d=new e.web3.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new e.web3.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const l=new e.web3.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new e.web3.PublicKey("So11111111111111111111111111111111111111112"),new e.web3.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");const u=new TextEncoder;function m(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 b({walletAddress:n,tokenMint:t,tokenProgramId:a=d}){return e.web3.PublicKey.findProgramAddressSync([n.toBuffer(),a.toBuffer(),t.toBuffer()],l)[0]}const f={offerState:[56,s],assetReceiver:[57,e=>e.toBase58()],market:[89,e=>e.toBase58()]};const p="rent_vault_prefix",y="loan",g="user_vault",k="bond_offer",w=new e.web3.PublicKey("revJ8QJgQ3xCcZ6CMykjsmGMYdg8Pj9WnqgJZBHBwSK"),P=new e.web3.PublicKey("pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT");async function T({accounts:n,args:t,connection:a}){const r=i(a),o=[],c=new e.BN(Math.floor(1e6*Math.random())),[s]=e.web3.PublicKey.findProgramAddressSync([u.encode(p)],r.programId),[d]=e.web3.PublicKey.findProgramAddressSync([u.encode(k),n.userPubkey.toBuffer(),u.encode(c.toString())],r.programId),l=await r.methods.createBondOffer(c,t.offerCapacity,t.liquidationLtvBp,t.loanAprBp).accountsStrict({rentVault:s,user:n.userPubkey,systemProgram:e.web3.SystemProgram.programId,rent:e.web3.SYSVAR_RENT_PUBKEY,bondOffer:d,market:n.market}).instruction();return o.push(l),{mutatedAccounts:{bondOffer:d},instructions:o,signers:[]}}async function A({connection:e,args:n,walletPublicKey:t,accounts:a}){const{banxMarket:r}=a;return T({connection:e,args:n,accounts:{userPubkey:t,market:r.struct.publicKey}})}async function L({accounts:n,connection:t}){const a=i(t),r=[],[o]=e.web3.PublicKey.findProgramAddressSync([u.encode(p)],a.programId),c=await a.methods.removeBondOffer().accountsStrict({user:n.userPubkey,systemProgram:e.web3.SystemProgram.programId,rent:e.web3.SYSVAR_RENT_PUBKEY,bondOffer:n.bondOffer,rentVault:o}).instruction();return r.push(c),{mutatedAccounts:{bondOffer:n.bondOffer},instructions:r,signers:[]}}async function B({connection:e,walletPublicKey:n,accounts:t}){const{bondOffer:a}=t;return L({connection:e,accounts:{userPubkey:n,bondOffer:a.struct.publicKey}})}async function M({accounts:n,args:t,connection:a}){const r=i(a),o=[],c=await r.methods.updateBondOffer(t.offerCapacity,t.liquidationLtvBp,t.loanAprBp).accountsStrict({user:n.userPubkey,systemProgram:e.web3.SystemProgram.programId,rent:e.web3.SYSVAR_RENT_PUBKEY,bondOffer:n.bondOffer,market:n.market}).instruction();return o.push(c),{mutatedAccounts:{bondOffer:n.bondOffer},instructions:o,signers:[]}}async function S({connection:e,args:n,walletPublicKey:t,accounts:a}){const{banxMarket:r,bondOffer:o}=a;return M({connection:e,args:{...o.struct,...n},accounts:{userPubkey:t,bondOffer:o.struct.publicKey,market:r.struct.publicKey}})}var v,O;function h(n,t){if(n===exports.OraclePriceFeedType.None)return e.web3.PublicKey.default;if(n===exports.OraclePriceFeedType.Switchboard)return new e.web3.PublicKey(t);if(n===exports.OraclePriceFeedType.Pyth){const n=new Uint8Array(2),a=new Uint8Array(t),[r]=e.web3.PublicKey.findProgramAddressSync([n,a],P);return r}throw new Error("OracleFeedType not supported")}async function R({accounts:n,connection:t,args:a}){const r=i(t),o=[],c=new e.BN(Math.floor(1e6*Math.random())),[s]=e.web3.PublicKey.findProgramAddressSync([u.encode(p)],r.programId),[m]=e.web3.PublicKey.findProgramAddressSync([u.encode(y),n.userPubkey.toBuffer(),u.encode(c.toString())],r.programId),[f]=e.web3.PublicKey.findProgramAddressSync([u.encode(g),n.userPubkey.toBuffer(),n.lendingTokenMint.toBuffer()],r.programId),k=b({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),P=b({walletAddress:f,tokenMint:n.lendingTokenMint}),T=b({walletAddress:w,tokenMint:n.lendingTokenMint}),A=b({walletAddress:n.market,tokenMint:n.collateralMint}),L=b({walletAddress:f,tokenMint:n.collateralMint}),B=await r.methods.borrowPerpetualLoan(c,a.amountToBorrow,a.amountOfCollateralToSend).accountsStrict({rentVault:s,user:n.userPubkey,systemProgram:e.web3.SystemProgram.programId,rent:e.web3.SYSVAR_RENT_PUBKEY,bondOffer:n.bondOffer,market:n.market,bondLoan:m,lendingTokenMint:n.lendingTokenMint,lenderVault:f,userCollateralTokenAccount:L,collateralMint:n.collateralMint,protocolFeeReceiver:w,protocolFeeReceiverLendingTokenAccount:T,oracle:n.oracle,tokenProgram:d,associatedTokenProgram:l,marketCollateralVaultTokenAccount:A,userLendingTokenAccount:k,lenderVaultLendingTokenAccount:P}).instruction();return o.push(B),{mutatedAccounts:{bondOffer:n.bondOffer,bondLoan:m},instructions:o,signers:[]}}async function K({args:e,connection:n,walletPublicKey:t,accounts:a}){const{bondOffer:r,banxMarket:o}=a,i=h(o.getOraclePriceFeedType(),o.struct.oraclePriceFeed);return R({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}})}exports.BanxMarketState=void 0,(v=exports.BanxMarketState||(exports.BanxMarketState={}))[v.None=0]="None",v[v.Initializing=1]="Initializing",v[v.Available=2]="Available",v[v.Closed=3]="Closed",exports.OraclePriceFeedType=void 0,(O=exports.OraclePriceFeedType||(exports.OraclePriceFeedType={}))[O.None=0]="None",O[O.Pyth=1]="Pyth",O[O.Switchboard=2]="Switchboard";class x{constructor(e){this.struct=e}static fromSerialized(n){return new x(function(n){return{...n,publicKey:new e.web3.PublicKey(n.publicKey),interestClaimedAmount:new e.BN(n.interestClaimedAmount),offerCapacity:new e.BN(n.offerCapacity),amountInLoans:new e.BN(n.amountInLoans),activeLoansAmount:new e.BN(n.activeLoansAmount),lastTransactedAt:new e.BN(n.lastTransactedAt),assetReceiver:new e.web3.PublicKey(n.assetReceiver),market:new e.web3.PublicKey(n.market),placeholder:new e.web3.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=i(e),a=await t.account.bondOffer.fetch(n);return a?{publicKey:n,...a}:null}(e,n);return t?new x(t):null}static async fetchMultiple(e,n){const t=await async function(e,n){const t=i(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 x(e)))}static async fetchAll(e,n){const t=await async function(e,n){const t=m(n||{},f),r=i(e);return(await r.account.bondOffer.all(t)).map(a)}(e,n);return t.map((e=>new x(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 A({accounts:{banxMarket:o},connection:n,walletPublicKey:i,args:{offerCapacity:t,liquidationLtvBp:a,loanAprBp:r}})}async getRemoveIxns(e,n){const{walletPublicKey:t}=e;return B({accounts:{bondOffer:this},connection:n,walletPublicKey:t})}async getUpdateIxns(e,n){const{walletPublicKey:t,banxMarket:a,offerCapacity:r,liquidationLtvBp:o,loanAprBp:i}=e;return S({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 K({accounts:{bondOffer:this,banxMarket:a},args:{amountOfCollateralToSend:r,amountToBorrow:o},connection:n,walletPublicKey:t})}}const I={collateralTokenMint:[40,e=>e.toBase58()],lendingTokenMint:[72,e=>e.toBase58()],marketState:[152,s],oracleFeedType:[153,s]};async function V({accounts:n,connection:t,args:a}){const r=i(t),o=[],c=b({walletAddress:n.userPubkey,tokenMint:a.collateralTokenMint}),[s]=e.web3.PublicKey.findProgramAddressSync([u.encode("banx_market"),a.lendingTokenMint.toBuffer(),a.collateralTokenMint.toBuffer()],r.programId),[m]=e.web3.PublicKey.findProgramAddressSync([u.encode(p)],r.programId),f=await r.methods.initializeOrUpdateMarket({upfrontFee:a.upfrontFeeBp,interestFee:a.interestFeeBp,marginOfSafety:new e.BN(a.marginOfSafety),marketState:{available:{}},lendingTokenMint:a.lendingTokenMint,oraclePriceFeed:a.oraclePriceFeed,collateralDigits:a.collateralDigits,oracleFeedType:{switchboard:{}},lendingTokenDigits:a.lendingTokenDigits,lookupTable:a.lookupTable,marketAuthority:a.marketAuthority,oracleDuration:a.oracleDuration}).accountsStrict({collateralMint:a.collateralTokenMint,collateralVaultTokenAccount:c,rentVault:m,market:s,user:n.userPubkey,systemProgram:e.web3.SystemProgram.programId,tokenProgram:d,associatedTokenProgram:l,rent:e.web3.SYSVAR_RENT_PUBKEY}).instruction();return o.push(f),{mutatedAccounts:{banxMarket:s},instructions:o,signers:[]}}async function N({args:e,accounts:n,connection:t,walletPublicKey:a}){return V({args:{...n.banxMarket.struct,...e},connection:t,accounts:{userPubkey:a}})}class C{constructor(e){this.struct=e}static fromSerialized(n){return new C(function(n){return{...n,publicKey:new e.web3.PublicKey(n.publicKey),marketAuthority:new e.web3.PublicKey(n.marketAuthority),collateralTokenMint:new e.web3.PublicKey(n.collateralTokenMint),lendingTokenMint:new e.web3.PublicKey(n.lendingTokenMint),oracleDuration:new e.BN(n.oracleDuration),lookupTable:new e.web3.PublicKey(n.lookupTable),placeholder1:new e.web3.PublicKey(n.placeholder1),placeholder2:new e.web3.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=i(e),a=await t.account.banxMarket.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=i(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 C(e)))}static async fetchAll(e,n){const t=await async function(e,n){const t=m(n||{},I),r=i(e);return(await r.account.banxMarket.all(t)).map(a)}(e,n);return t.map((e=>new C(e)))}getState(){return this.struct.marketState}getOraclePriceFeedType(){return this.struct.oracleFeedType}async getUpdateIxns(e,n){const{walletPublicKey:t,...a}=e;return N({accounts:{banxMarket:this},walletPublicKey:t,connection:n,args:a})}}const F={user:[8,e=>e.toBase58()],lendingTokenMint:[40,e=>e.toBase58()],stakingType:[152,s],userVaultState:[153,s]};async function q({args:n,accounts:t,connection:a}){const r=i(a),o=[],[c]=e.web3.PublicKey.findProgramAddressSync([u.encode(g),t.userPubkey.toBuffer(),t.lendingTokenMint.toBuffer()],r.programId),s=b({walletAddress:t.userPubkey,tokenMint:t.lendingTokenMint}),m=b({walletAddress:c,tokenMint:t.lendingTokenMint}),[f]=e.web3.PublicKey.findProgramAddressSync([u.encode(p)],r.programId),y=await r.methods.updateUserVault(n.amount,"add"===n.mode).accountsStrict({rentVault:f,user:t.userPubkey,systemProgram:e.web3.SystemProgram.programId,tokenProgram:d,associatedTokenProgram:l,rent:e.web3.SYSVAR_RENT_PUBKEY,userVault:c,lendingTokenMint:t.lendingTokenMint,userSplTokenAccountUninitialized:s,vaultSplTokenAccountUninitialized:m}).instruction();return o.push(y),{mutatedAccounts:{userVault:c},instructions:o,signers:[]}}async function E({connection:e,args:n,accounts:t}){const{userVault:a,banxMarket:r}=t;return q({args:n,connection:e,accounts:{userPubkey:a.struct.user,lendingTokenMint:r.struct.lendingTokenMint}})}class J{constructor(e){this.struct=e}static fromSerialized(n){return new J(function(n){return{...n,publicKey:new e.web3.PublicKey(n.publicKey),user:new e.web3.PublicKey(n.user),lendingTokenMint:new e.web3.PublicKey(n.lendingTokenMint),reservesAmount:new e.BN(n.reservesAmount),liquidityInLoansAmount:new e.BN(n.liquidityInLoansAmount),interestRewardsAmount:new e.BN(n.interestRewardsAmount),rentRewards:new e.BN(n.rentRewards),fundsInCurrentEpoch:new e.BN(n.fundsInCurrentEpoch),fundsInNextEpoch:new e.BN(n.fundsInNextEpoch),lastCalculatedSlot:new e.BN(n.lastCalculatedSlot),lastCalculatedTimestamp:new e.BN(n.lastCalculatedTimestamp),rewardsToHarvest:new e.BN(n.rewardsToHarvest),rewardsHarvested:new e.BN(n.rewardsHarvested),lastTransactedAt:new e.BN(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=i(e),a=await t.account.userVault.fetch(n);return a?{publicKey:n,...a}:null}(e,n);return t?new J(t):null}static async fetchMultiple(e,n){const t=await async function(e,n){const t=i(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 J(e)))}static async fetchAll(e,n){const t=await async function(e,n){const t=m(n||{},F),r=i(e);return(await r.account.userVault.all(t)).map(a)}(e,n);return t.map((e=>new J(e)))}getState(){return this.struct.userVaultState}async getUpdateIxns(e,n){const{amount:t,mode:a,banxMarket:r}=e;return E({accounts:{userVault:this,banxMarket:r},connection:n,args:{amount:t,mode:a}})}}const _={bondOffer:[8,e=>e.toBase58()],lender:[40,e=>e.toBase58()],borrower:[72,e=>e.toBase58()],bondLoanState:[280,s],liquidationType:[281,s],redeemResult:[282,s],redeemResultNext:[284,s]};async function U({accounts:n,connection:t}){const a=i(t),r=[],[o]=e.web3.PublicKey.findProgramAddressSync([u.encode(p)],a.programId),[c]=e.web3.PublicKey.findProgramAddressSync([u.encode(g),n.userPubkey.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),s=b({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),m=b({walletAddress:c,tokenMint:n.lendingTokenMint}),f=b({walletAddress:w,tokenMint:n.lendingTokenMint}),y=b({walletAddress:n.market,tokenMint:n.collateralMint}),k=b({walletAddress:c,tokenMint:n.collateralMint}),P=await a.methods.repayPerpetualLoan().accountsStrict({rentVault:o,user:n.userPubkey,systemProgram:e.web3.SystemProgram.programId,rent:e.web3.SYSVAR_RENT_PUBKEY,bondOffer:n.bondOffer,market:n.market,bondLoan:n.bondLoan,lendingTokenMint:n.lendingTokenMint,lenderVault:c,userCollateralTokenAccount:k,collateralMint:n.collateralMint,protocolFeeReceiver:w,protocolFeeReceiverLendingTokenAccount:f,oracle:n.oracle,tokenProgram:d,associatedTokenProgram:l,marketCollateralVaultTokenAccount:y,userLendingTokenAccount:s,lenderVaultLendingTokenAccount:m}).instruction();return r.push(P),{mutatedAccounts:{bondOffer:n.bondOffer,bondLoan:n.bondLoan},instructions:r,signers:[]}}async function W({connection:e,walletPublicKey:n,accounts:t}){const{bondOffer:a,banxMarket:r}=t,o=h(r.getOraclePriceFeedType(),r.struct.oraclePriceFeed);return U({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 D({args:n,accounts:t,connection:a}){const r=i(a),o=[],[c]=e.web3.PublicKey.findProgramAddressSync([u.encode(p)],r.programId),[s]=e.web3.PublicKey.findProgramAddressSync([u.encode(y),t.bondLoan.toBuffer()],r.programId),[m]=e.web3.PublicKey.findProgramAddressSync([u.encode(g),t.userPubkey.toBuffer(),t.lendingTokenMint.toBuffer()],r.programId),f=b({walletAddress:t.userPubkey,tokenMint:t.lendingTokenMint}),k=b({walletAddress:m,tokenMint:t.lendingTokenMint}),P=b({walletAddress:w,tokenMint:t.lendingTokenMint}),T=await r.methods.repayPartialPerpetualLoan(n.amountToRepay).accountsStrict({rentVault:c,user:t.userPubkey,systemProgram:e.web3.SystemProgram.programId,rent:e.web3.SYSVAR_RENT_PUBKEY,bondOffer:t.bondOffer,market:t.market,bondLoan:t.bondLoan,lendingTokenMint:t.lendingTokenMint,lenderVault:m,protocolFeeReceiver:w,protocolFeeReceiverLendingTokenAccount:P,oracle:t.oracle,tokenProgram:d,associatedTokenProgram:l,userLendingTokenAccount:f,lenderVaultLendingTokenAccount:k,newBondLoan:s}).instruction();return o.push(T),{mutatedAccounts:{bondOffer:t.bondOffer,prevBondLoan:t.bondLoan,newBondLoan:s},instructions:o,signers:[]}}async function z({args:e,connection:n,walletPublicKey:t,accounts:a}){const{bondOffer:r,banxMarket:o}=a,i=h(o.getOraclePriceFeedType(),o.struct.oraclePriceFeed);return D({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 G({accounts:n,connection:t}){const a=i(t),r=[];return r.push(await a.methods.terminatePerpetualLoan().accountsStrict({user:n.userPubkey,systemProgram:e.web3.SystemProgram.programId,rent:e.web3.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 H({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,banxMarket:r}=t,o=h(r.getOraclePriceFeedType(),r.struct.oraclePriceFeed);return G({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 Q({accounts:n,connection:t}){const a=i(t),r=[];return r.push(await a.methods.revertTerminatePerpetualLoan().accountsStrict({user:n.userPubkey,systemProgram:e.web3.SystemProgram.programId,rent:e.web3.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 Y({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,banxMarket:r}=t;return Q({connection:e,accounts:{bondLoan:a.struct.publicKey,bondOffer:a.struct.bondOffer,userPubkey:n,lender:a.struct.lender,market:r.struct.publicKey}})}async function Z({accounts:n,connection:t,args:a}){const r=i(t),o=[],[c]=e.web3.PublicKey.findProgramAddressSync([u.encode(p)],r.programId),[s]=e.web3.PublicKey.findProgramAddressSync([u.encode(g),n.newLender.toBuffer(),n.lendingTokenMint.toBuffer()],r.programId),[m]=e.web3.PublicKey.findProgramAddressSync([u.encode(g),n.oldLender.toBuffer(),n.lendingTokenMint.toBuffer()],r.programId),[f]=e.web3.PublicKey.findProgramAddressSync([u.encode(y),n.oldBondLoan.toBuffer()],r.programId),k=b({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),P=b({walletAddress:m,tokenMint:n.lendingTokenMint}),T=b({walletAddress:s,tokenMint:n.lendingTokenMint}),A=b({walletAddress:w,tokenMint:n.lendingTokenMint}),L=await r.methods.borrowerRefinance(a.amountToRefinance).accountsStrict({rentVault:c,user:n.userPubkey,systemProgram:e.web3.SystemProgram.programId,rent:e.web3.SYSVAR_RENT_PUBKEY,market:n.market,lendingTokenMint:n.lendingTokenMint,protocolFeeReceiver:w,protocolFeeReceiverLendingTokenAccount:A,tokenProgram:d,associatedTokenProgram:l,userLendingTokenAccount:k,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,oldBondLoan:n.oldBondLoan,newBondLoan:f,newLenderVault:s,oldLenderVault:m,oldLenderVaultLendingTokenAccount:P,newLenderVaultLendingTokenAccount:T,oracle:n.oracle}).instruction();return o.push(L),{mutatedAccounts:{newBondLoan:f,oldBondLoan:n.oldBondLoan,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,newLenderVault:s,oldLenderVault:m},instructions:o,signers:[]}}async function j({args:e,connection:n,walletPublicKey:t,accounts:a}){const{bondLoan:r,bondOffer:o,banxMarket:i}=a,c=h(i.getOraclePriceFeedType(),i.struct.oraclePriceFeed);return Z({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 X({accounts:n,connection:t}){const a=i(t),r=[],[o]=e.web3.PublicKey.findProgramAddressSync([u.encode(p)],a.programId),[c]=e.web3.PublicKey.findProgramAddressSync([u.encode(g),n.newLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[s]=e.web3.PublicKey.findProgramAddressSync([u.encode(g),n.oldLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[m]=e.web3.PublicKey.findProgramAddressSync([u.encode(y),n.oldBondLoan.toBuffer()],a.programId),f=b({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),k=b({walletAddress:s,tokenMint:n.lendingTokenMint}),P=b({walletAddress:c,tokenMint:n.lendingTokenMint}),T=b({walletAddress:w,tokenMint:n.lendingTokenMint}),A=await a.methods.lenderInstantRefinance().accountsStrict({rentVault:o,user:n.userPubkey,systemProgram:e.web3.SystemProgram.programId,rent:e.web3.SYSVAR_RENT_PUBKEY,market:n.market,lendingTokenMint:n.lendingTokenMint,protocolFeeReceiver:w,protocolFeeReceiverLendingTokenAccount:T,tokenProgram:d,associatedTokenProgram:l,userLendingTokenAccount:f,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,oldBondLoan:n.oldBondLoan,newBondLoan:m,newLenderVault:c,oldLenderVault:s,oldLenderVaultLendingTokenAccount:k,newLenderVaultLendingTokenAccount:P,oracle:n.oracle}).instruction();return r.push(A),{mutatedAccounts:{newBondLoan:m,oldBondLoan:n.oldBondLoan,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,newLenderVault:c,oldLenderVault:s},instructions:r,signers:[]}}async function $({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,bondOffer:r,banxMarket:o}=t,i=h(o.getOraclePriceFeedType(),o.struct.oraclePriceFeed);return X({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 ee({accounts:n,connection:t}){const a=i(t),r=[],[o]=e.web3.PublicKey.findProgramAddressSync([u.encode(p)],a.programId),[c]=e.web3.PublicKey.findProgramAddressSync([u.encode(g),n.newLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[s]=e.web3.PublicKey.findProgramAddressSync([u.encode(g),n.oldLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[m]=e.web3.PublicKey.findProgramAddressSync([u.encode(y),n.oldBondLoan.toBuffer()],a.programId),f=b({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),k=b({walletAddress:s,tokenMint:n.lendingTokenMint}),P=b({walletAddress:w,tokenMint:n.lendingTokenMint}),T=await a.methods.refinancePerpetualLoanFromOffer().accountsStrict({rentVault:o,user:n.userPubkey,systemProgram:e.web3.SystemProgram.programId,rent:e.web3.SYSVAR_RENT_PUBKEY,market:n.market,lendingTokenMint:n.lendingTokenMint,protocolFeeReceiver:w,protocolFeeReceiverLendingTokenAccount:P,tokenProgram:d,associatedTokenProgram:l,userLendingTokenAccount:f,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,oldBondLoan:n.oldBondLoan,newBondLoan:m,newLenderVault:c,oldLenderVault:s,oldLenderVaultLendingTokenAccount:k,oracle:n.oracle}).instruction();return r.push(T),{mutatedAccounts:{newBondLoan:m,oldBondLoan:n.oldBondLoan,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,newLenderVault:c,oldLenderVault:s},instructions:r,signers:[]}}async function ne({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,bondOffer:r,banxMarket:o}=t,i=h(o.getOraclePriceFeedType(),o.struct.oraclePriceFeed);return ee({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 te({accounts:n,connection:t}){const a=i(t),r=[],o=new e.BN(Math.floor(1e6*Math.random())),[c]=e.web3.PublicKey.findProgramAddressSync([u.encode(p)],a.programId),[s]=e.web3.PublicKey.findProgramAddressSync([u.encode(g),n.newLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[m]=e.web3.PublicKey.findProgramAddressSync([u.encode(g),n.oldLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[f]=e.web3.PublicKey.findProgramAddressSync([u.encode(y),n.oldBondLoan.toBuffer()],a.programId),[P]=e.web3.PublicKey.findProgramAddressSync([u.encode(k),n.userPubkey.toBuffer(),u.encode(o.toString())],a.programId),T=b({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),A=b({walletAddress:m,tokenMint:n.lendingTokenMint}),L=b({walletAddress:w,tokenMint:n.lendingTokenMint}),B=await a.methods.refinancePerpetualLoan().accountsStrict({rentVault:c,user:n.userPubkey,systemProgram:e.web3.SystemProgram.programId,rent:e.web3.SYSVAR_RENT_PUBKEY,market:n.market,lendingTokenMint:n.lendingTokenMint,protocolFeeReceiver:w,protocolFeeReceiverLendingTokenAccount:L,tokenProgram:d,associatedTokenProgram:l,userLendingTokenAccount:T,newBondOffer:P,oldBondOffer:n.oldBondOffer,oldBondLoan:n.oldBondLoan,newBondLoan:f,newLenderVault:s,oldLenderVault:m,oldLenderVaultLendingTokenAccount:A}).instruction();return r.push(B),{mutatedAccounts:{newBondLoan:f,oldBondLoan:n.oldBondLoan,newBondOffer:P,oldBondOffer:n.oldBondOffer,newLenderVault:s,oldLenderVault:m},instructions:r,signers:[]}}async function ae({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,banxMarket:r}=t;return te({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 re{constructor(e){this.struct=e}static fromSerialized(n){return new re(function(n){return{...n,publicKey:new e.web3.PublicKey(n.publicKey),bondOffer:new e.web3.PublicKey(n.bondOffer),lender:new e.web3.PublicKey(n.lender),borrower:new e.web3.PublicKey(n.borrower),collateralTokenAccount:new e.web3.PublicKey(n.collateralTokenAccount),compoundedProtocolInterest:new e.BN(n.compoundedProtocolInterest),loanAmount:new e.BN(n.loanAmount),feeAmount:new e.BN(n.feeAmount),soldAt:new e.BN(n.soldAt),redeemedAt:new e.BN(n.redeemedAt),currentRemainingLent:new e.BN(n.currentRemainingLent),interestSnapshot:new e.BN(n.interestSnapshot),partialRepaySnapshot:new e.BN(n.partialRepaySnapshot),terminationStartedAt:new e.BN(n.terminationStartedAt),lenderOriginalLent:new e.BN(n.lenderOriginalLent),lenderFullRepaidAmount:new e.BN(n.lenderFullRepaidAmount),borrowerOriginalLent:new e.BN(n.borrowerOr