fbonds-core
Version:
Banx protocol sdk
84 lines (83 loc) • 6.05 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const helpers_1 = require("../fbond-protocol//helpers");
const types_1 = require("../fbond-protocol/types");
const src_1 = require("src");
const migration_1 = require("src/fbond-protocol/functions/migration");
const utils_1 = require("./utils");
(() => __awaiter(void 0, void 0, void 0, function* () {
const chunks = (array, chunkSize = 10) => {
let res = [];
for (let currentChunk = 0; currentChunk < array.length; currentChunk += chunkSize) {
res.push(array.slice(currentChunk, currentChunk + chunkSize));
}
return res;
};
const mainnetConnection = new src_1.anchor.web3.Connection('https://mainnet.helius-rpc.com/?api-key=0dd0537a-65dd-4d40-a7d5-97804e3caa7e', 'confirmed');
const connection = mainnetConnection;
const userKeypair = yield (0, utils_1.createKeypairFromFile)(__dirname + '/keys/banx_admin_mainnet.json');
// console.log(userKeypair.publicKey)
const sendTxnUserMock = (txn, signers) => __awaiter(void 0, void 0, void 0, function* () { });
const sendTxnUserDevnet = (txn, signers) => __awaiter(void 0, void 0, void 0, function* () { return console.log(yield connection.sendTransaction(txn.add(src_1.web3.ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 40000 })), [userKeypair, ...signers]).catch((err) => console.log(err))); });
const program = (0, helpers_1.returnAnchorProgram)(mainnetConnection);
const fbonds = (yield program.account.fraktBond.all()).map(fbond => (0, helpers_1.anchorRawBNsAndPubkeysToNumsAndStrings)(fbond));
// const fbondsToDelete = fbonds.filter(fbond => fbond.fraktBondState === FraktBondState.PerpetualLiquidatedByClaim || fbond.fraktBondState === FraktBondState.PerpetualRepaid)
const btts = (yield program.account.bondTradeTransactionV3.all()).map(fbond => (0, helpers_1.anchorRawBNsAndPubkeysToNumsAndStrings)(fbond));
// const bttsToDelete = btts.filter(fbond => fbond.bondTradeTransactionState === BondTradeTransactionV2State.PerpetualLiquidatedByClaim
// || fbond.bondTradeTransactionState === BondTradeTransactionV2State.PerpetualPartialRepaid || fbond.bondTradeTransactionState === BondTradeTransactionV2State.PerpetualRefinanceRepaid)
const activeBtts = btts.filter(fbond => fbond.bondTradeTransactionState == types_1.BondTradeTransactionV2State.PerpetualActive
|| fbond.bondTradeTransactionState == types_1.BondTradeTransactionV2State.PerpetualBorrowerListing
|| fbond.bondTradeTransactionState == types_1.BondTradeTransactionV2State.PerpetualManualTerminating
|| fbond.bondTradeTransactionState == types_1.BondTradeTransactionV2State.PerpetualAutoTerminating
|| fbond.bondTradeTransactionState == types_1.BondTradeTransactionV2State.PerpetualRefinancedActive
|| fbond.bondTradeTransactionState == types_1.BondTradeTransactionV2State.PerpetualSellingListing
|| fbond.bondTradeTransactionState == types_1.BondTradeTransactionV2State.PerpetualSellingLoan);
const offers = (yield program.account.bondOfferV3.all()).map(fbond => (0, helpers_1.anchorRawBNsAndPubkeysToNumsAndStrings)(fbond));
let offersToDelete = offers.filter(fbond => fbond.pairState === types_1.PairState.PerpetualBondingCurveClosed
&& fbond.edgeSettlement.isZero() && !activeBtts.find(btt => btt.bondOffer.toString() === fbond.publicKey.toString()));
// const facelessOfffres = offers.filter(offer => offer.hadoMarket.toString() === "BzxKw3JLmPt7aagkHnRQEMQ4Le1rZdwEib5Viuig42hu" )
// const activeBttFacclessToDelete = btts.filter(fbond => fbond.bondTradeTransactionState === BondTradeTransactionV2State.PerpetualActive
// && facelessOfffres.find(offer => offer.publicKey.toString() == fbond.bondOffer.toString()));
// const activeFbondsFacclessToDelete = fbonds.filter(fbond => fbond.fraktBondState === FraktBondState.PerpetualActive && fbond.fraktMarket.toString() === "BBDTWocoEELhwmRBECcudJ2yfCDX1fteYj9uFQAsCDtr");
// console.log("count: ", fbondsToDelete.length,)
// fbondsToDelete.length = 1;
let chunk = chunks(offersToDelete, 8);
console.log("count: ", chunk.length);
for (let indexChunk = 0; indexChunk < chunk.length; indexChunk++) {
let tempChunk = chunk[indexChunk];
let tr = new src_1.web3.Transaction();
const instructions = [];
console.log("patching : ", indexChunk, chunk.length);
for (let index = 0; index < tempChunk.length; index++) {
const offerr = tempChunk[index];
const result = yield (0, migration_1.harvestRentByAdmin)({
connection: connection,
accounts: {
adminPukey: userKeypair.publicKey,
},
sendTxn: sendTxnUserMock,
programId: program.programId,
args: {
account: offerr,
isFacelses: false
}
});
// if (result.rentOwner.toString() != userKeypair.publicKey.toString()) {
// console.log(offerr, "rent owner: ", result.rentOwner)
// }
instructions.push(...result.instructions);
}
for (let instruction of [...instructions])
tr.add(instruction);
yield sendTxnUserDevnet(tr, []);
}
}))();