banx-token-lending-sdk
Version:
Banx Token Lending sdk
2 lines • 71.4 kB
JavaScript
import{web3 as e,Program as n,AnchorProvider as t,BN as a}from"@coral-xyz/anchor";export{BN,web3}from"@coral-xyz/anchor";import r from"bs58";const o={address:"Banxj7HgkaM1Uwy5kYAAXypMubWMRtJ7Wyf6kqHaFgCq",metadata:{name:"banxTokenLending",version:"0.1.3",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,signer:!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",writable:!0},{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",writable:!0},{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:"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:"market"}]}},{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:"createListing",discriminator:[18,168,45,24,191,31,117,54],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:"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,signer:!0},{name:"userCollateralTokenAccount",writable:!0},{name:"collateralMint",writable:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"tokenProgram",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associatedTokenProgram",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],args:[{name:"seed",type:"u64"},{name:"amountToBorrow",type:"u64"},{name:"amountToSendCollateral",type:"u64"},{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:"lendToBorrowerListing",discriminator:[52,85,47,164,17,155,224,57],accounts:[{name:"bondOffer",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:"borrower",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:"market",writable:!0},{name:"userLendingTokenAccount",writable:!0},{name:"borrowerLendingTokenAccount",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:"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",writable:!0},{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,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:"user",writable:!0,signer:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"collateralMint",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:"lendingTokenMint",writable:!0},{name:"marketLendingVaultTokenAccount",writable:!0},{name:"oracle",writable:!0},{name:"marketCollateralVaultTokenAccount",writable:!0},{name:"lenderVaultLendingTokenAccount",writable:!0},{name:"tokenProgram",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associatedTokenProgram",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"jupiterProgram",address:"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"},{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:"protocolFeeReceiverLendingTokenAccount"},{name:"protocolFeeReceiver",writable:!0,address:"revJ8QJgQ3xCcZ6CMykjsmGMYdg8Pj9WnqgJZBHBwSK"},{name:"borrowerCollateralTokenAccount"},{name:"borrower",writable:!0}],args:[{name:"data",type:"bytes"}]},{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",writable:!0},{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",writable:!0},{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:"removeListing",discriminator:[74,5,236,7,2,104,139,114],accounts:[{name:"bondOffer",writable:!0},{name:"bondLoan",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:"market",writable:!0,pda:{seeds:[{kind:"const",value:[98,97,110,120,95,109,97,114,107,101,116]},{kind:"account",path:"market"},{kind:"account",path:"market"}]}},{name:"marketCollateralVaultTokenAccount",writable:!0},{name:"userCollateralTokenAccount",writable:!0},{name:"collateralMint",writable:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"tokenProgram",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associatedTokenProgram",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],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",writable:!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:"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",writable:!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:"tokenProgram",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associatedTokenProgram",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],args:[]},{name:"returnAccountRentByAdmin",discriminator:[162,154,119,190,193,198,2,171],accounts:[{name:"user",writable:!0,signer:!0,address:"HAmVVqzQHz4Bk46Rncochq6QkmNjykM4SeXjtmVXusBi"},{name:"userVault",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114,95,118,97,117,108,116]},{kind:"account",path:"rentOwner"},{kind:"const",value:[150,251,113,246,39,7,116,33,84,55,86,60,238,100,138,141,250,66,70,173,74,254,60,246,152,214,188,246,40,130,150,25]}]}},{name:"rentOwner",writable:!0},{name:"accountToDelete",writable:!0},{name:"systemProgram",address:"11111111111111111111111111111111"},{name:"rent",address:"SysvarRent111111111111111111111111111111111"}],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:"sellLoan",type:"bool"}]},{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:"invalidInstructionData",msg:"InvalidInstructionData"},{code:6002,name:"wrongSenderTokenAccount",msg:"Wtong sender token account"},{code:6003,name:"marketNotActive",msg:"MarketNotActive"},{code:6004,name:"bondLoanNotActive",msg:"BondLoanNotActive"},{code:6005,name:"offerNotActive",msg:"OfferNotActive"},{code:6006,name:"invalidRentVaultAccount",msg:"InvalidRentVaultAccount"},{code:6007,name:"invalidCollateralMint",msg:"InvalidCollateralMint"},{code:6008,name:"invalidLendingTokenMint",msg:"InvalidLendingTokenMint"},{code:6009,name:"offerLtvExceedLimit",msg:"OfferLtvExceedLimit"},{code:6010,name:"offerLiqLtvExcedLimit",msg:"OfferLiqLtvExceedLimit"},{code:6011,name:"wrongOracleId",msg:"WrongOracleId"},{code:6012,name:"incorrectOfferForLoan",msg:"Incorrect offer for loan"},{code:6013,name:"oldOracle",msg:"Oracle too old"},{code:6014,name:"incorrectLoanStatus",msg:"IncorrectLoanStatus"},{code:6015,name:"terminationFreezeNotReached",msg:"Termination freeze not reached"},{code:6016,name:"incorrectTerminationStatus",msg:"Incorrect termination status"},{code:6017,name:"cantAutoTerminateLoan",msg:"Can't auto terminate loan"},{code:6018,name:"cantLiquidateLoanBefore30Days",msg:"Can't liquidate loan before 30 day termination"},{code:6019,name:"invalidCollateralTokenAccount",msg:"Invalid collateral token account"},{code:6020,name:"invalidRedeemResult",msg:"InvalidRedeemResult"},{code:6021,name:"collateralTransferAccountsNotFound",msg:"CollateralTransferAccountsNotFound"},{code:6022,name:"offerDoesntMatchMarket",msg:"OfferDoesntMatchMarket"},{code:6023,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:"u32"},{name:"lookupTable",type:"pubkey"},{name:"placeholder1",type:"pubkey"},{name:"placeholder2",type:"pubkey"},{name:"padding",type:{array:["u8",8]}}]}},{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:"auctionStartedAt",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:"u32"},{name:"marketState",type:"u8"},{name:"lendingTokenMint",type:"pubkey"},{name:"oraclePriceFeed",type:{array:["u8",32]}},{name:"collateralDigits",type:"u8"},{name:"oracleFeedType",type:"u8"},{name:"lendingTokenDigits",type:"u8"},{name:"lookupTable",type:"pubkey"},{name:"marketAuthority",type:"pubkey"},{name:"oracleDuration",type:"u64"}]}},{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 s{constructor(e){this.payer=e}static local(){const n=new e.Keypair;return new s(n)}get publicKey(){return this.payer.publicKey}async signTransaction(e){return e}async signAllTransactions(e){return e}}const c=new s(e.Keypair.generate());function l(e){return new n(o,new t(e,c))}const d=new e.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),u=new e.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"),m=new e.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),b=new e.PublicKey("So11111111111111111111111111111111111111112"),f=new e.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP"),k=new e.PublicKey("BANXyWgPpa519e2MtQF1ecRbKYKKDMXPF1dyBxUq9NQG"),g=new TextEncoder,y=1e4,p=new a(y),w=31536e3,A=1e9;function P(e,n=8){const t=e.toArray("le",n),a=new Uint8Array(t);return r.encode(a)}function T(e){return P(new a(e),1)}function L(e,n=A){return e.mul(new a(n))}function B(e,n=A){return e.div(new a(n))}function M(e,n=A){return e.mul(new a(n)).div(p)}function S(e,n,t=A){return e.mul(n).div(new a(t))}function O(e,n,t=A){return e.mul(new a(t)).div(n)}function h(e){if(e.lt(new a(0)))throw new Error("Sqrt only works on non-negative inputs");if(e.lt(new a(2)))return e;const n=h(e.shrn(2)).shln(1),t=n.add(new a(1));return t.mul(t).gt(e)?n:t}function v(e,n){const[t,a]=n;return{memcmp:{offset:t,bytes:a(e)}}}function R(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 v(t,a)}))}function K({walletAddress:n,tokenMint:t,tokenProgramId:a=d}){return e.PublicKey.findProgramAddressSync([n.toBuffer(),a.toBuffer(),t.toBuffer()],m)[0]}function V(e,n){if(n<=0)throw new Error("Chunk size must be greater than 0");const t=[];for(let a=0;a<e.length;a+=n)t.push(e.slice(a,a+n));return t}var I=Object.freeze({__proto__:null,ANCHOR_WALLET_PLACEHOLDER:c,ASSOCIATED_TOKEN_PROGRAM_ID:m,BANX_SOL_MINT:k,BASE_POINTS:y,BASE_POINTS_BN:p,ENCODER:g,NATIVE_MINT:b,NATIVE_MINT_2022:f,SECONDS_IN_YEAR:w,TOKEN_2022_PROGRAM_ID:u,TOKEN_PROGRAM_ID:d,WAD:A,bnToBase58LE:P,bpToWad:M,chunk:V,createGetAllProgramAccountFilter:v,createGetAllProgramAccountFilters:R,findATA:K,fromWad:B,getBanxAnchorProgram:l,mergePublicKeyAndAccountData:i,sqrtBN:h,toWad:L,u128ToBase58:function(e){return P(e,16)},u64ToBase58:function(e){return P(e,8)},u8ToBase58:T,wadDiv:O,wadMul:S});function x(e){return{...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()}}function N(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)}}async function C(e,n,t){const a=l(e),r=V(t,100).map((e=>a.account[n].fetchMultiple(e)));return(await Promise.all(r)).flat().map(((e,n)=>e?{publicKey:t[n],...e}:null)).filter((e=>null!==e))}async function F(e,n){const t=l(e),a=await t.account.banxMarket.fetch(n);return a?{publicKey:n,...a}:null}async function E(e,n){return C(e,"banxMarket",n)}const _={collateralTokenMint:[40,e=>e.toBase58()],lendingTokenMint:[72,e=>e.toBase58()],marketState:[152,T],oracleFeedType:[153,T]};async function W(e,n){const t=R(n||{},_),a=l(e);return(await a.account.banxMarket.all(t)).map(i)}const q="rent_vault_prefix",J="loan",U="user_vault",G="bond_offer",D="banx_market",Q=new e.PublicKey("revJ8QJgQ3xCcZ6CMykjsmGMYdg8Pj9WnqgJZBHBwSK"),Z=new e.PublicKey("pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT"),z=new e.PublicKey("JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"),Y=new e.PublicKey("4fdMvFuyNboQ5Kr93X16f1tFcTeEkvfNwNAeSrzY3afb"),H=new e.PublicKey("BANXyWgPpa519e2MtQF1ecRbKYKKDMXPF1dyBxUq9NQG"),j=new e.PublicKey("SPMBzsVUuoHA4Jm6KunbsotaahvVikZs1JyTW6iJvbn"),X=new e.PublicKey("3ufHs1EDLsCPTsBYG5ydsctCmCP2qHn5nVqqLRSpcj4A"),$=new e.PublicKey("niN3rZEhnbp2abRMsVJ15W4G9F2dKXNyaUfCTYcQbsW"),ee=new e.PublicKey("J1rLDnAzXMhdpGifEYKbQhVt5JoGmJZPaYFDgd5VKXAH");async function ne({accounts:n,connection:t,args:a}){const r=l(t),o=[],i=K({walletAddress:n.userPubkey,tokenMint:a.collateralTokenMint}),[s]=e.PublicKey.findProgramAddressSync([g.encode(D),a.lendingTokenMint.toBuffer(),a.collateralTokenMint.toBuffer()],r.programId),[c]=e.PublicKey.findProgramAddressSync([g.encode(q)],r.programId),u=await r.methods.initializeOrUpdateMarket({upfrontFee:a.upfrontFeeBp,interestFee:a.interestFeeBp,marginOfSafety:a.marginOfSafety,marketState:a.marginOfSafety,lendingTokenMint:a.lendingTokenMint,oraclePriceFeed:a.oraclePriceFeed,collateralDigits:a.collateralDigits,oracleFeedType:a.oracleFeedType,lendingTokenDigits:a.lendingTokenDigits,lookupTable:a.lookupTable,marketAuthority:a.marketAuthority,oracleDuration:a.oracleDuration}).accountsStrict({collateralMint:a.collateralTokenMint,collateralVaultTokenAccount:i,rentVault:c,market:s,user:n.userPubkey,systemProgram:e.SystemProgram.programId,tokenProgram:d,associatedTokenProgram:m,rent:e.SYSVAR_RENT_PUBKEY}).instruction();return o.push(u),{mutatedAccounts:{banxMarket:s},instructions:o,signers:[]}}async function te({args:e,accounts:n,connection:t,walletPublicKey:a}){return ne({args:{...n.banxMarket.struct,...e},connection:t,accounts:{userPubkey:a}})}class ae{constructor(e){this.struct=e}static fromSerialized(e){return new ae(N(e))}serialize(){return x(this.struct)}static async fetch(e,n){const t=await F(e,n);return t?new ae(t):null}static async fetchMultiple(e,n){return(await E(e,n)).map((e=>new ae(e)))}static async fetchAll(e,n){return(await W(e,n)).map((e=>new ae(e)))}getState(){return this.struct.marketState}getOraclePriceFeedType(){return this.struct.oracleFeedType}async getUpdateIxns(e,n){const{walletPublicKey:t,...a}=e;return te({accounts:{banxMarket:this},walletPublicKey:t,connection:n,args:a})}}var re,oe;function ie(n,t){if(n===oe.None)return e.PublicKey.default;if(n===oe.Switchboard)return new e.PublicKey(t);if(n===oe.Pyth){const n=new Uint8Array(2),a=new Uint8Array(t),[r]=e.PublicKey.findProgramAddressSync([n,a],Z);return r}throw new Error("OracleFeedType not supported")}function se(e){return{...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.partialRepaySnapshot.toString(),terminationStartedAt:e.auctionStartedAt.toString(),lenderOriginalLent:e.lenderOriginalLent.toString(),lenderFullRepaidAmount:e.lenderFullRepaidAmount.toString(),borrowerOriginalLent:e.borrowerOriginalLent.toString(),borrowerFullRepaidAmount:e.borrowerFullRepaidAmount.toString(),repaymentCallAmount:e.repaymentCallAmount.toString(),collateralAmount:e.collateralAmount.toString(),placeholder2:e.placeholder2.toBase58()}}function ce(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),auctionStartedAt: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)}}async function le(e,n){const t=l(e),a=await t.account.bondLoan.fetch(n);return a?{publicKey:n,...a}:null}async function de(e,n){return C(e,"bondLoan",n)}!function(e){e[e.None=0]="None",e[e.Initializing=1]="Initializing",e[e.Available=2]="Available",e[e.Closed=3]="Closed"}(re||(re={})),function(e){e[e.None=0]="None",e[e.Pyth=1]="Pyth",e[e.Switchboard=2]="Switchboard"}(oe||(oe={}));const ue={bondOffer:[8,e=>e.toBase58()],lender:[40,e=>e.toBase58()],borrower:[72,e=>e.toBase58()],bondLoanState:[280,T],liquidationType:[281,T],redeemResult:[282,T],redeemResultNext:[284,T]};async function me(e,n){const t=R(n||{},ue),a=l(e);return(await a.account.bondLoan.all(t)).map(i)}function be({loanValue:e,startTimeUnix:n,endTimeUnix:t,aprBp:r}){const o=L(e),i=L(new a(t-n)),s=L(new a(w)),c=M(new a(r));return B(S(o,S(O(i,s),c)))}const fe=(n,t,a,r)=>{const o=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:e.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:e.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}];return[new e.TransactionInstruction({keys:o,programId:m,data:Buffer.from([1])})]};function ke(n,t){const a=K({walletAddress:n,tokenMint:H}),[r]=e.PublicKey.findProgramAddressSync([Y.toBuffer(),Buffer.from("withdraw")],j);return t.push(...fe(a,n,n,H)),[{pubkey:Y,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:X,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:$,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:H,isSigner:!1,isWritable:!0},{pubkey:e.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:j,isSigner:!1,isWritable:!1}]}function ge(n){const t=K({walletAddress:n,tokenMint:H}),a=K({walletAddress:ee,tokenMint:H});return[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:H,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:e.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:e.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}]}async function ye({accounts:n,connection:t}){const a=l(t),r=[],[o]=e.PublicKey.findProgramAddressSync([g.encode(q)],a.programId),[i]=e.PublicKey.findProgramAddressSync([g.encode(U),n.lender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),s=K({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),c=K({walletAddress:i,tokenMint:n.lendingTokenMint}),u=K({walletAddress:Q,tokenMint:n.lendingTokenMint}),b=K({walletAddress:n.userPubkey,tokenMint:n.collateralMint}),f=n.lendingTokenMint.toBase58()===H.toBase58()?ke(n.userPubkey,r):[],k=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:b,collateralMint:n.collateralMint,protocolFeeReceiver:Q,protocolFeeReceiverLendingTokenAccount:u,oracle:n.oracle,tokenProgram:d,associatedTokenProgram:m,marketCollateralVaultTokenAccount:n.marketCollateralVaultTokenAccount,userLendingTokenAccount:s,lenderVaultLendingTokenAccount:c}).remainingAccounts(f).instruction();return r.push(k),{mutatedAccounts:{bondOffer:n.bondOffer,bondLoan:n.bondLoan},instructions:r,signers:[]}}async function pe({connection:e,walletPublicKey:n,accounts:t}){const{bondOffer:a,banxMarket:r,bondLoan:o}=t,i=ie(r.getOraclePriceFeedType(),r.struct.oraclePriceFeed);return ye({connection:e,accounts:{bondLoan:o.struct.publicKey,bondOffer:a.struct.publicKey,userPubkey:n,market:r.struct.publicKey,collateralMint:r.struct.collateralTokenMint,lendingTokenMint:r.struct.lendingTokenMint,oracle:i,marketCollateralVaultTokenAccount:o.struct.collateralTokenAccount,lender:a.struct.assetReceiver}})}async function we({args:n,accounts:t,connection:a}){const r=l(a),o=[],[i]=e.PublicKey.findProgramAddressSync([g.encode(q)],r.programId),[s]=e.PublicKey.findProgramAddressSync([g.encode(J),t.bondLoan.toBuffer()],r.programId),[c]=e.PublicKey.findProgramAddressSync([g.encode(U),t.lender.toBuffer(),t.lendingTokenMint.toBuffer()],r.programId),u=K({walletAddress:t.userPubkey,tokenMint:t.lendingTokenMint}),b=K({walletAddress:c,tokenMint:t.lendingTokenMint}),f=K({walletAddress:Q,tokenMint:t.lendingTokenMint}),k=t.lendingTokenMint.toBase58()===H.toBase58()?ke(t.userPubkey,o):[],y=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:c,protocolFeeReceiver:Q,protocolFeeReceiverLendingTokenAccount:f,oracle:t.oracle,tokenProgram:d,associatedTokenProgram:m,userLendingTokenAccount:u,lenderVaultLendingTokenAccount:b,newBondLoan:s}).remainingAccounts(k).instruction();return o.push(y),{mutatedAccounts:{bondOffer:t.bondOffer,prevBondLoan:t.bondLoan,newBondLoan:s},instructions:o,signers:[]}}async function Ae({args:e,connection:n,walletPublicKey:t,accounts:a}){const{bondOffer:r,banxMarket:o,bondLoan:i}=a,s=ie(o.getOraclePriceFeedType(),o.struct.oraclePriceFeed);return we({args:e,connection:n,accounts:{bondLoan:i.struct.publicKey,bondOffer:r.struct.publicKey,userPubkey:t,market:o.struct.publicKey,collateralMint:o.struct.collateralTokenMint,lendingTokenMint:o.struct.lendingTokenMint,oracle:s,lender:r.struct.assetReceiver}})}async function Pe({args:n,accounts:t,connection:a}){const r=l(a),o=[];return o.push(await r.methods.terminatePerpetualLoan(n.sellLoan).accountsStrict({user:t.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,market:t.market,bondLoan:t.bondLoan,bondOffer:t.bondOffer,oracle:t.oracle}).instruction()),{mutatedAccounts:{bondLoan:t.bondLoan,bondOffer:t.bondOffer},instructions:o,signers:[]}}async function Te({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,banxMarket:r}=t,o=ie(r.getOraclePriceFeedType(),r.struct.oraclePriceFeed);return Pe({connection:e,args:{sellLoan:!1},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 Le({accounts:n,connection:t}){const a=l(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 Be({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,banxMarket:r}=t;return Le({connection:e,accounts:{bondLoan:a.struct.publicKey,bondOffer:a.struct.bondOffer,userPubkey:n,lender:a.struct.lender,market:r.struct.publicKey}})}async function Me({accounts:n,connection:t,args:a}){const r=l(t),o=[],[i]=e.PublicKey.findProgramAddressSync([g.encode(q)],r.programId),[s]=e.PublicKey.findProgramAddressSync([g.encode(U),n.newLender.toBuffer(),n.lendingTokenMint.toBuffer()],r.programId),[c]=e.PublicKey.findProgramAddressSync([g.encode(U),n.oldLender.toBuffer(),n.lendingTokenMint.toBuffer()],r.programId),[u]=e.PublicKey.findProgramAddressSync([g.encode(J),n.oldBondLoan.toBuffer()],r.programId),b=K({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),f=K({walletAddress:c,tokenMint:n.lendingTokenMint}),k=K({walletAddress:s,tokenMint:n.lendingTokenMint}),y=K({walletAddress:Q,tokenMint:n.lendingTokenMint}),p=n.lendingTokenMint.toBase58()===H.toBase58()?a.positiveRefinance?ge(n.userPubkey):ke(n.userPubkey,o):[],w=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:Q,protocolFeeReceiverLendingTokenAccount:y,tokenProgram:d,associatedTokenProgram:m,userLendingTokenAccount:b,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,oldBondLoan:n.oldBondLoan,newBondLoan:u,newLenderVault:s,oldLenderVault:c,oldLenderVaultLendingTokenAccount:f,newLenderVaultLendingTokenAccount:k,oracle:n.oracle}).remainingAccounts(p).instruction();return o.push(w),{mutatedAccounts:{newBondLoan:u,oldBondLoan:n.oldBondLoan,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,newLenderVault:s,oldLenderVault:c},instructions:o,signers:[]}}async function Se({args:e,connection:n,walletPublicKey:t,accounts:a}){const{bondLoan:r,bondOffer:o,banxMarket:i}=a,s=ie(i.getOraclePriceFeedType(),i.struct.oraclePriceFeed);return Me({args:e,connection:n,accounts:{lendingTokenMint:i.struct.lendingTokenMint,market:i.struct.publicKey,oracle:s,oldBondOffer:r.struct.bondOffer,oldBondLoan:r.struct.publicKey,oldLender:r.struct.lender,newBondOffer:o.struct.publicKey,newLender:o.struct.assetReceiver,userPubkey:t}})}async function Oe({accounts:n,connection:t}){const a=l(t),r=[],[o]=e.PublicKey.findProgramAddressSync([g.encode(q)],a.programId),[i]=e.PublicKey.findProgramAddressSync([g.encode(U),n.newLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[s]=e.PublicKey.findProgramAddressSync([g.encode(U),n.oldLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[c]=e.PublicKey.findProgramAddressSync([g.encode(J),n.oldBondLoan.toBuffer()],a.programId),u=K({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),b=K({walletAddress:s,tokenMint:n.lendingTokenMint}),f=K({walletAddress:i,tokenMint:n.lendingTokenMint}),k=K({walletAddress:Q,tokenMint:n.lendingTokenMint});n.lendingTokenMint.toBase58()!==H.toBase58()||ge(n.userPubkey);const y=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:Q,protocolFeeReceiverLendingTokenAccount:k,tokenProgram:d,associatedTokenProgram:m,userLendingTokenAccount:u,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,oldBondLoan:n.oldBondLoan,newBondLoan:c,newLenderVault:i,oldLenderVault:s,oldLenderVaultLendingTokenAccount:b,newLenderVaultLendingTokenAccount:f,oracle:n.oracle}).instruction();return r.push(y),{mutatedAccounts:{newBondLoan:c,oldBondLoan:n.oldBondLoan,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,newLenderVault:i,oldLenderVault:s},instructions:r,signers:[]}}async function he({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,bondOffer:r,banxMarket:o}=t,i=ie(o.getOraclePriceFeedType(),o.struct.oraclePriceFeed);return Oe({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 ve({accounts:n,connection:t}){const a=l(t),r=[],[o]=e.PublicKey.findProgramAddressSync([g.encode(q)],a.programId),[i]=e.PublicKey.findProgramAddressSync([g.encode(U),n.newLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[s]=e.PublicKey.findProgramAddressSync([g.encode(U),n.oldLender.toBuffer(),n.lendingTokenMint.toBuffer()],a.programId),[c]=e.PublicKey.findProgramAddressSync([g.encode(J),n.oldBondLoan.toBuffer()],a.programId),u=K({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),b=K({walletAddress:s,tokenMint:n.lendingTokenMint}),f=K({walletAddress:Q,tokenMint:n.lendingTokenMint}),k=n.lendingTokenMint.toBase58()===H.toBase58()?ke(n.userPubkey,r):[],y=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:Q,protocolFeeReceiverLendingTokenAccount:f,tokenProgram:d,associatedTokenProgram:m,userLendingTokenAccount:u,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,oldBondLoan:n.oldBondLoan,newBondLoan:c,newLenderVault:i,oldLenderVault:s,oldLenderVaultLendingTokenAccount:b,oracle:n.oracle}).remainingAccounts(k).instruction();return r.push(y),{mutatedAccounts:{newBondLoan:c,oldBondLoan:n.oldBondLoan,newBondOffer:n.newBondOffer,oldBondOffer:n.oldBondOffer,newLenderVault:i,oldLenderVault:s},instructions:r,signers:[]}}async function Re({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,bondOffer:r,banxMarket:o}=t,i=ie(o.getOraclePriceFeedType(),o.struct.oraclePriceFeed);return ve({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 Ke({accounts:n,connection:t}){const r=l(t),o=[],i=new a(Math.floor(1e6*Math.random())),[s]=e.PublicKey.findProgramAddressSync([g.encode(q)],r.programId),[c]=e.PublicKey.findProgramAddressSync([g.encode(U),n.newLender.toBuffer(),n.lendingTokenMint.toBuffer()],r.programId),[u]=e.PublicKey.findProgramAddressSync([g.encode(U),n.oldLender.toBuffer(),n.lendingTokenMint.toBuffer()],r.programId),[b]=e.PublicKey.findProgramAddressSync([g.encode(J),n.oldBondLoan.toBuffer()],r.programId),[f]=e.PublicKey.findProgramAddressSync([g.encode(G),n.userPubkey.toBuffer(),g.encode(i.toString())],r.programId),k=K({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),y=K({walletAddress:u,tokenMint:n.lendingTokenMint}),p=K({walletAddress:Q,tokenMint:n.lendingTokenMint}),w=n.lendingTokenMint.toBase58()===H.toBase58()?ke(n.userPubkey,o):[],A=await r.methods.refinancePerpetualLoan().accountsStrict({rentVault:s,user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,market:n.market,lendingTokenMint:n.lendingTokenMint,protocolFeeReceiver:Q,protocolFeeReceiverLendingTokenAccount:p,tokenProgram:d,associatedTokenProgram:m,userLendingTokenAccount:k,newBondOffer:f,oldBondOffer:n.oldBondOffer,oldBondLoan:n.oldBondLoan,newBondLoan:b,newLenderVault:c,oldLenderVault:u,oldLenderVaultLendingTokenAccount:y}).remainingAccounts(w).instruction();return o.push(A),{mutatedAccounts:{newBondLoan:b,oldBondLoan:n.oldBondLoan,newBondOffer:f,oldBondOffer:n.oldBondOffer,newLenderVault:c,oldLenderVault:u},instructions:o,signers:[]}}async function Ve({connection:e,walletPublicKey:n,accounts:t}){const{bondLoan:a,banxMarket:r}=t;return Ke({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}})}async function Ie({accounts:n,args:t,connection:a}){const r=l(a),o=[],i=t.jupInstruction.keys,[s]=e.PublicKey.findProgramAddressSync([g.encode(q)],r.programId),[c]=e.PublicKey.findProgramAddressSync([g.encode(U),n.userPubkey.toBuffer(),n.lendingTokenMint.toBuffer()],r.programId),u=K({walletAddress:c,tokenMint:n.lendingTokenMint}),b=K({walletAddress:Q,tokenMint:n.lendingTokenMint}),f=K({walletAddress:n.market,tokenMint:n.collateralMint}),k=K({walletAddress:n.market,tokenMint:n.lendingTokenMint}),y=K({walletAddress:n.borrower,tokenMint:n.collateralMint});return o.push(await r.methods.liquidatePerpetualLoan(t.jupInstruction.data).accountsStrict({user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,market:n.market,bondLoan:n.bondLoan,bondOffer:n.bondOffer,lendingTokenMint:n.lendingTokenMint,borrower:n.borrower,collateralMint:n.collateralMint,lenderVault:c,marketLendingVaultTokenAccount:k,oracle:n.oracle,marketCollateralVaultTokenAccount:f,lenderVaultLendingTokenAccount:u,tokenProgram:d,associatedTokenProgram:m,jupiterProgram:z,rentVault:s,protocolFeeReceiverLendingTokenAccount:b,protocolFeeReceiver:Q,borrowerCollateralTokenAccount:y}).remainingAccounts(i).instruction()),{mutatedAccounts:{bondLoan:n.bondLoan,bondOffer:n.bondOffer,lenderVault:c},instructions:o,signers:[]}}async function xe({args:e,connection:n,walletPublicKey:t,accounts:a}){const{banxMarket:r,bondLoan:o}=a,i=ie(r.getOraclePriceFeedType(),r.struct.oraclePriceFeed);return Ie({args:e,connection:n,accounts:{userPubkey:t,lender:a.bondLoan.struct.lender,bondLoan:o.struct.publicKey,bondOffer:o.struct.bondOffer,market:r.struct.publicKey,lendingTokenMint:r.struct.lendingTokenMint,collateralMint:r.struct.collateralTokenMint,oracle:i,borrower:o.struct.borrower}})}async function Ne({accounts:n,connection:t,args:r}){const o=l(t),i=[],s=new a(Math.floor(1e6*Math.random())),[c]=e.PublicKey.findProgramAddressSync([g.encode(q)],o.programId),[u]=e.PublicKey.findProgramAddressSync([g.encode(J),n.userPubkey.toBuffer(),g.encode(s.toString())],o.programId),[b]=e.PublicKey.findProgramAddressSync([g.encode(U),n.lender.toBuffer(),n.lendingTokenMint.toBuffer()],o.programId),f=K({walletAddress:n.userPubkey,tokenMint:n.lendingTokenMint}),k=K({walletAddress:b,tokenMint:n.lendingTokenMint}),y=K({walletAddress:Q,tokenMint:n.lendingTokenMint});console.log(y);const p=e.Keypair.generate(),w=K({walletAddress:n.userPubkey,tokenMint:n.collateralMint});console.log("userCollateralTokenAccount",o.methods.borrowPerpetualLoan);const A=await o.methods.borrowPerpetualLoan(s,r.amountToBorrow,r.amountOfCollateralToSend).accountsStrict({rentVault:c,user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,bondOffer:n.bondOffer,market:n.market,bondLoan:u,lendingTokenMint:n.lendingTokenMint,lenderVault:b,userCollateralTokenAccount:w,collateralMint:n.collateralMint,protocolFeeReceiver:Q,oracle:n.oracle,tokenProgram:d,associatedTokenProgram:m,marketCollateralVaultTokenAccount:p.publicKey,userLendingTokenAccount:f,lenderVaultLendingTokenAccount:k,protocolFeeReceiverLendingTokenAccount:y}).instruction();return i.push(A),{mutatedAccounts:{bondOffer:n.bondOffer,bondLoan:u},instructions:i,signers:[p]}}async function Ce({args:e,connection:n,walletPublicKey:t,accounts:a}){const{bondOffer:r,banxMarket:o}=a,i=ie(o.getOraclePriceFeedType(),o.struct.oraclePriceFeed);return Ne({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}})}async function Fe({accounts:n,args:t,connection:r}){const o=l(r),i=[],s=new a(Math.floor(1e6*Math.random())),[c]=e.PublicKey.findProgramAddressSync([g.encode(q)],o.programId),[d]=e.PublicKey.findProgramAddressSync([g.encode(G),n.userPubkey.toBuffer(),g.encode(s.toString())],o.programId),[u]=e.PublicKey.findProgramAddressSync([g.encode(U),n.userPubkey.toBuffer(),n.lendingTokenMint.toBuffer()],o.programId),m=await o.methods.createBondOffer(s,t.offerCapacity,t.liquidationLtvBp,t.loanAprBp).accountsStrict({rentVault:c,user:n.userPubkey,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,bondOffer:d,market:n.market,newLenderVault:u}).instruction();return i.push(m),{mutatedAccounts:{bondOffer:d},instructions:i,signers:[]}}async function Ee({connection:e,args:n,walletPublicKey:t,accounts:a}){const{banxMarket:r}=a;return Fe({connection:e,args:n,accounts:{lendingTokenMint:r.struct.lendingTokenMint,userPubkey:t,market:r.struct.publicKey}})}async function _e({accounts:n,connection:t}){const a=l(t),r=[],[o]=e.PublicKey.findProgramAddressSync([g.encode(q)],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 We({connection:e,walletPublicKey:n,accounts:t}){const{bondOffer:a}=t;return _e({connection:e,accounts:{userPubkey:n,bondOffer:a.struct.publicKey}})}async function qe({accounts:n,args:t,connection:a}){const r=l(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 Je({connection:e,args:n,walletPublicKey:t,accounts:a}){const{banxMarket:r,bondOffer:o}=a;return qe({connection:e,args:{...o.struct,...n},accounts:{userPubkey:t,bondOffer:o.struct.publicKey,market:r.struct.publicKey}})}async function Ue({args:n,accounts:t,connection:a}){const r=l(a),o=[],[i]=e.PublicKey.findProgramAddressSync([g.encode(U),t.userPubkey.toBuffer(),t.lendingTokenMint.toBuffer()],r.programId),s=K({walletAddress:t.userPubkey,tokenMint:t.lendingTokenMint}),c=K({walletAddress:i,tokenMint:t.lendingTokenMint}),[u]=e.PublicKey.findProgramAddressSync([g.encode(q)],r.programId),b=t.lendingTokenMint.toBase58()===H.toBase58()?"remove"==n.mode?ge(t.userPubkey):ke(t.userPubkey,o):[],f=await r.methods.updateUserVault(n.amount,"add"===n.mode).accountsStrict({rentVault:u,user:t.userPubkey,systemProgram:e.SystemProgram.programId,tokenProgram:d,associatedTokenProgram:m,rent:e.SYSVAR_RENT_PUBKEY,userVault:i,lendingTokenMint:t.lendingTokenMint,userSplTokenAccountUninitialized:s,vaultSplTokenAccountUninitialized:c}).remainingAccounts(b).instruction();return o.push(f),{mutatedAccounts:{userVault:i},instructions:o,signers:[]}}async function Ge({connection:e,args:n,accounts:t}){const{userVault:a,banxMarket:r}=t;return Ue({args:n,connection:e,accounts:{userPubkey:a.struct.user,lendingTokenMint:r.struct.lendingTokenMint}})}var De,Qe,Ze,ze,Ye=Object.freeze({__proto__:null,getBorrowIxns:Ce,getBorrowIxnsRaw:Ne,getBorrowerRefinanceIxns:Se,getBorrowerRefinanceIxnsRaw:Me,getCreateOfferIxns:Ee,getCreateOfferIxnsRaw:Fe,getInitMarketIxns:async function({args:e,connection:n,walletPublicKey:t}){return ne({args:e,connection:n,accounts:{userPubkey:t}})},getInitOrUpdateMarketIxnsRaw:ne,getLenderInstantRefinanceIxns:he,getLenderInstantRefinanceIxnsRaw:Oe,getLiquidateIxns:xe,getLiquidateIxnsRaw:Ie,getRefinanceLoanFromOfferIxns:Re,getRefinanceLoanFromOfferIxnsRaw:ve,getRefinanceLoanIxns:Ve,getRefinanceLoanIxnsRaw:Ke,getRemoveOfferIxns:We,getRemoveOfferIxnsRaw:_e,getRepayLoanIxns:pe,getRepayLoanIxnsRaw:ye,getRepayLoanPartialIxns:Ae,getRepayLoanPartialIxnsRaw:we,getReturnRentByAdminIxnsRaw:async function({accounts:n,connection:t}){const a=l(t),r=[],[o]=e.PublicKey.findProgramAddressSync([g.encode(U),n.rentOwner.toBuffer(),k.toBuffer()],a.programId),i=await a.methods.returnAccountRentByAdmin().accountsStrict({user:n.userPubkey,rentOwner:n.rentOwner,userVault:o,systemProgram:e.SystemProgram.programId,rent:e.SYSVAR_RENT_PUBKEY,accountToDelete:n.accountToDelete}).instruction();return r.push(i),{mutatedAccounts:{userVault:o},instructions:r,signers:[]}},getRevertTerminationIxns:Be,getRevertTerminationIxnsRaw:Le,getTerminateIxns:Te,getTerminateIxnsRaw:Pe,getUpdateMarketIxns:te,getUpdateOfferIxns:Je,getUpdateOfferIxnsRaw:qe,getUpdateUserVaultIxns:Ge,getUpdateUserVaultIxnsRaw:Ue});function He(e){const{loanAmount:n,feeAmount:t,compoundedProtocolInterest:a}=e.struct;return n.add(t).add(a)}function je(e){const{loanAmount:n,feeAmount:t}=e.struct;return n.add(t)}function Xe(e,n){return be({loanValue:He(e),startTimeUnix:e.struct.soldAt.toNumber(),endTimeUnix:n,aprBp:tn(e)})}function $e(e,n){return be({loanValue:He(e),startTimeUnix:e.struct.soldAt.toNumber(),endTimeUnix:n,aprBp:e.struct.lenderApr})}function en(e,n){const t=He(e),a=Xe(e,n);return t.add(a)}function nn(e,n){const t=He(e),a=$e(e,n);return t.add(a)}function tn(e){const{lenderApr:n,protocolApr:t}=e.struct;return n*((y+t)/y)}function an(e,n){const{repaymentCallAmount:t,soldAt:r,lenderApr:o}=e.struct,i=L(t),s=L(new a(n-r.toNumber())),c=L(new a(w)),l=M(new a(o)),d=O(s,c);return B(h(O(i,S(d,l))))}class rn{constructor(e){this.struct=e}static fromSerialized(e){return new rn(ce(e))}serialize(){return se(this.struct)}static async fetch(e,n){const t=await le(e,n);return t?new rn(t):null}static async fetchMultiple(e,n){return(await de(e,n)).map((e=>new rn(e)))}static async fetchAll(e,n){return(await me(e,n)).map((e=>new rn(e)))}getState(){return this.struct.bondLoanState}getLiquidationState(){return this.struct.liquidationType}getRedeemResult(){return this.struct.redeemResult}getRedeemResultNext(){return this.struct.redeemResultNext}getBondLoanType(){return this.struct.bondLoanType}calcBorrowerLoanBody(){return He(this)}calcLenderLoanBody(){return je(this)}calcBorrowerInterest(e){return Xe(this,e)}calcLenderInterest(e){return $e(this,e)}calcBorrowerDebt(e){return en(this,e)}calcLentAmountWithInterest(e){return nn(this,e)}calcBorrowerApr(){return tn(this)}calcRepayAmountFromRepaymentCall(e){return an(this,e)}async getRepayIxns(e,n){const{walletPublicKey:t,banxMarket:a,bondOffer:r}=e;return pe({accounts:{bondLoan:this,bondOffer:r,banxMarket:a},connection:n,walletPublicKey:t})}async getRepayPartialIxns(e,n){const{walletPublicKey:t,banxMarket:a,bondOffer:r,amountToRepay:o}=e;return Ae({accounts:{bondLoan:this,bondOffer:r,banxMarket:a},args:{amountToRepay:o},connection:n,walletPublicKey:t})}async getTerminateIxns(e,n){const{walletPublicKey:t,banxMarket:a}=e;return Te({accounts:{bondLoan:this,banxMarket:a},connection:n,walletPublicKey:t})}async getRevertTerminationIxns(e,n){const{walletPublicKey:t,banxMarket:a}=e;return Be({accounts:{bondLoan:this,banxMarket:a},connection:n,walletPublicKey:t})}async getRefinanceIxns(e,n){const{walletPublicKey:t,banxMarket:a}=e;return Ve({accounts:{bondLoan:this,banxMarket:a},connection:n,walletPublicKey:t})}async getBorrowerRefinanceIxns(e,n){const{walletPublicKey:t,banxMarket:a,bondOffer:r,amountToRefinance:o}=e;return Se({accounts:{bondLoan:this,bondOffer:r,banxMarket:a},args:{positiveRefinance:o>en(this,Date.now()),amountToRefinance:o},connection:n,walletPublicKey:t})}async getLenderInstantRefinanceIxns(e,n){const{walletPublicKey:t,banxMarket:a,bondOffer:r}=e;return he({accounts:{bondLoan:this,bondOffer:r,banxMarket:a},connection:n,walletPublicKey:t})}async getRefinanceLoanFromOfferIxns(e,n){const{walletPublicKey:t,banxMarket:a,bondOffer:r}=e;return Re({accounts:{bondLoan:this,bondOffer:r,banxMarket:a},connection:n,walletPublicKey:t})}async getLiquidateIxns(e,n){const{walletPublicKey:t,banxMarket:a,jupInstruction:r}=e;return xe({accounts:{bondLoan:this,banxMarket:a},args:{jupInstruction:r},connection:n,walletPublicKey:t})}}function on(e){return{...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()}}function sn(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)}}async function cn(e,n){const t=l(e),a=await t.account.bondOffer.fetch(n);return a?{publicKey:n,...a}:null}async function ln(e,n){return C(e,"bondOffer",n)}!function(e){e[e.None=0]="None",e[e.Initializing=1]="Initializing",e[e.Active=2]="Active",e[e.Closed=3]="Closed"}(De||(De={})),function(e){e[e.None=0]="None",e[e.Terminating=1]="Terminating",e[e.AutoTerminating=2]="AutoTerminating",e[e.SellingOnMarket=3]="SellingOnMarket",e[e.Liquidated=4]="Liquidated"}(Qe||(Qe={})),function(e){e[e.None=0]="None",e[e.DirectBorrow=1]="DirectBorrow",e[e.Reborrow=2]="Reborrow",e[e.InstantRefinanced=3]="InstantRefinanced",e[e.RefinancedByAuction=4]="RefinancedByAuction",e[e.PartialRepay=5]="PartialRepay",e[e.DirectRepaid=6]="DirectRepaid",e[e.AddCollateral=7]="AddCollateral",e[e.Liquidation=8]="Liquidation",e[e.BorrowerListing=9]="BorrowerListing",e[e.LendToBorrowerListing=10]="LendToBorrowerListing"}(Ze||(Ze={})),function(e){e[e.None=0]="None",e[e.OracleBased=1]="OracleBased"}(ze||(ze={}));const dn={offerState:[56,T],assetReceiver:[57,e=>e.toBase58()],market:[89,e=>e.toBase58()]};async function un(e,n){const t=R(n||{},dn),a=l(e);return(await a.account.bondOffer.all(t)).map(i)}function mn({userVault:e,bondOffers:n}){const t=[...new Set(n.map((e=>e.struct.assetReceiver.toBase58())))];if(1!==t.length)throw new Error("assetReceiver in bondOffers is not unique");if(!t.includes(e.struct.user.toBase58()))throw new Error("assetReceiver in bondOffers is not equal to userVault.user");let r=e.struct.reservesAmount;return n.map((e=>e.serialize())).map((e=>{const n=new a(e.offerCapacity);return n.gte(r)?(r=new a(0),{...e,offerCapacity:r.toString()}):(r=r.sub(n),{...e,offerCapacity:r.toString()})})).map((e=>bn.fromSerialized(e)))}class bn{constructor(e){this.struct=e}static fromSerialized(e){return new bn(sn(e))}serialize(){return on(this.struct)}static async fetch(e,n){const t=await cn(e,n);return t?new bn(t):null}static async fetchMultiple(e,n){return(await ln(e,n)).map((e=>new bn(e)))}static async fetchAll(e,n){return(await un(e,n)).map((e=>new bn(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 Ee({accounts:{banxMarket:o},connection:n,walletPublicKey:i,args:{offerCapacity:t,liquidationLtvBp:a,loanAprBp:r}})}async getRemoveIxns(e,n){const{walletPublicKey:t}=e;return We({accounts:{bondOffer:this},connection:n,walletPublicKey:t})}async getUpdateIxns(e,n){const{walletPublicKey:t,banxMarket:a,offerCapacity:r,liquidationLtvBp:o,loanAprBp:i}=e;return Je({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 Ce({accounts:{bondOffer:this,banxMarket:a},args:{amountOfCollateralToSend:r,amountToBorrow:o},connection:n,walletPublicKey:t})}static adjustOffersByVaultBalance({bondOffers:e,userVault:n}){return mn({bondOffers:e,userVault:n})}static adjustOffersByMultipleVaultBalances({bondOffers:e,userVaults:n}){return function({userVaults:e,bondOffers:n}){const t=n.reduce(((e,n)=>{const t=n.struct.assetReceiver.toBase58();return e[t]=e[t]||[],e[t].push(n),e}),{});return e.map((e=>mn({userVault:e,bondOffers:t[e.struct.user.toBase58()]}))).flat()}({bondOffers:e,userVaults:n})}}var fn;function kn(e){return{...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()}}function gn(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)}}!function(e){e[e.None=0]="None",e[e.Initializing=1]="Initializing",e[e.Active=2]="Active",e[e.Closed=3]="Closed"}(fn||(fn={}));const yn={user:[8,e=>e.toBase58()],lendingTokenMint:[40,e=>e.toBase58()],stakingType:[152,T],userVaultState:[153,T]};class pn{constructor(e){this.struct=e}static fromSerialized(e){return new pn(gn(e))}serialize(){return kn(this.struct)}static async fetch(e,n){const t=await async function(e,n){const t=l(e),a=await t.account.userVault.fetch(n);return a?{publicKey:n,...a}:null}(e,n);return t?new pn(t):null}static async fetchMultiple(e,n){const t=await async function(e,n){return C(e,"userVault",n)}(e,n);return t.map((e=>new pn(e)))}static async fetchAll(e,n){const t=await async function(e,n){const t=R(n||{},yn),a=l(e);return(await a.account.userVault.all(t)).map(i)}(e,n);return t.map((e=>new pn(e)))}getState(){return this.struct.userVaultState}async getUpdateIxns(e,n){const{amount:t,mode:a,banxMarket:r}=e;return Ge({accounts:{userVault:this,banxMarket:r},connection:n,args:{amount:t,mode:a}})}}var wn;!function(e){e[e.None=0]="None",e[e.Active=1]="Active"}(wn||(wn={}));var An=Object.freeze({__proto__:null,BANX_MARKET_PREFIX:D,BANX_PROTOCOL_FEE_RECEIVER:Q,BANX_SOL_MINT:H,BANX_SOL_POOL:Y,BANX_SOL_SWAP_VAULT:ee,BOND_OFFER_PREFIX:G,BanxMarket:ae,get BanxMarketState(){return re},BondLoan:rn,get BondLoanState(){return De},get BondLoanType(){return ze},BondOffer:bn,get BondOfferState(){return fn},JUPITER_PROGRAM:z,LOAN_PREFIX:J,get LiquidationState(){return Qe},MANAGER_BANX_SOL_FEE:$,get OraclePriceFeedType(){return oe},PYTH_PUSH_ORACLE_PROGRAM_ID:Z,RENT_VAULT_PREFIX:q,RESERVE_STAKE_BANX_SOL:X,get RedeemResult(){return Ze},SANCTUM_POOL_PROGRAM:j,USER_VAULT_PREFIX:U,UserVault:pn,get UserVaultState(){return wn},calcBorrowerLoanApr:tn,calcBorrowerLoanBody:He,calcBorrowerLoanInterest:Xe,calcInterest:be,calcLenderLoanBody:je,calcLenderLoanInterest:$e,calcLentAmountWithInterest:nn,calcLoanBorrowerDebt:en,calcLoanRepayAmountFromRepaymentCall:an,createAssociatedTokenAccountInstructionIdimpotent:fe,deserializeBanxMarketStruct:N,deserializeBondLoanStruct:ce,deserializeBondOfferStruct:sn,deserializeUserVaultStruct:gn,fetchAllBanxMarkets:W,fetchAllBondLoans:me,fetchAllBondOffers:un,fetchBanxMarket:F,fetchBanxMultipleAccountsChunked:C,fetchBondLoan:le,fetchBondOffer:cn,fetchMultipleBanxMarkets:E,fetchMultipleBondLoans:de,fetchMultipleBondOffers:ln,getOraclePublicKey:ie,getSwapBanxSolToSolAccounts:ge,getSwapSolToBanxSolAccounts:ke,instructions:Ye,serializeBanxMarketStruct:x,serializeBondLoanStruct:se,serializeBondOfferStruct:on,serializeUserVaultStruct:kn});export{ae as BanxMarket,re as BanxMarketState,rn as BondLoan,De as BondLoanState,ze as BondLoanType,bn as BondOffer,fn as BondOfferState,o as IDL,Qe as LiquidationState,oe as OraclePriceFeedType,Ze as RedeemResult,pn as UserVault,wn as UserVaultState,tn as calcBorrowerLoanApr,He as calcBorrowerLoanBody,Xe as calcBorrowerLoanInterest,je as calcLenderLoanBody,$e as calcLenderLoanInterest,nn as calcLentAmountWithInterest,en as calcLoanBorrowerDebt,an as calcLoanRepayAmountFromRepaymentCall,An as core,N as deserializeBanxMarketStruct,ce as deserializeBondLoanStruct,sn as deserializeBondOfferStruct,gn as deserializeUserVaultStruct,W as fetchAllBanxMarkets,me as fetchAllBondLoans,un as fetchAllBondOffers,F as fetchBanxMarket,le as fetchBondLoan,cn as fetchBondOffer,E as fetchMultipleBanxMarkets,de as fetchMultipleBondLoans,ln as fetchMultipleBondOffers,ie as getOraclePublicKey,x as serializeBanxMarketStruct,se as serializeBondLoanStruct,on as serializeBondOfferStruct,kn as serializeUserVaultStruct,I as shared};//# sourceMappingURL=index.mjs.map