UNPKG

fbonds-core

Version:

Banx protocol sdk

483 lines (482 loc) • 30.3 kB
"use strict"; 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 perpetual_1 = require("./../../src/fbond-protocol/functions/perpetual"); const helpers_1 = require("../fbond-protocol/helpers"); const types_1 = require("../fbond-protocol/types"); const src_1 = require("./../../src"); const constants_1 = require("./../../src/fbond-protocol/constants"); const migration_1 = require("./../../src/fbond-protocol/functions/migration"); const utils_1 = require("./utils"); const covertToArray = (input) => { // Remove the '0x' prefix if it exists const hexString = input.startsWith('0x') ? input.slice(2) : input; // Decode the hex string into a Buffer const output = Buffer.from(hexString, 'hex'); // Convert the Buffer to a number array const array = [...output]; return array; }; (() => __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 activateOracle = true; const setOfferLtv = true; const onDev = false; const urlMeta = "https://api.banx.gg/bonds/spl/preview-v2?order=asc&skip=0&limit=10&getAll=true&isPrivate=false&marketType=banxSol"; const urlMetaUSDC = "https://api.banx.gg/bonds/spl/preview-v2?order=asc&skip=0&limit=10&getAll=true&isPrivate=false&marketType=usdc"; const fetch = require('node-fetch'); const response = yield fetch(urlMeta, { method: 'GET', headers: { 'Content-Type': 'application/json', }, }); const response2 = yield fetch(urlMetaUSDC, { method: 'GET', headers: { 'Content-Type': 'application/json', }, }); const data = yield response.json(); const dataUsdc = yield response2.json(); const solMarketData = data.data; const usdcMarketData = dataUsdc.data; const hadoMarkets = (yield program.account.hadoMarket.all()).map(account => (0, helpers_1.anchorRawBNsAndPubkeysToNumsAndStrings)(account)); console.log("start"); const oracleInfoProd = [ { oracleFeedType: types_1.OraclePriceFeedType.Pyth, //lrts sponsored oracleHash: covertToArray("0xadd6499a420f809bbebc0b22fbf68acb8c119023897f6ea801688e0d6e391af4"), lendingTokenType: types_1.LendingTokenType.BanxSol, hadoMarketKey: new src_1.web3.PublicKey('7EuPa26AjGdnQ7JcqM3kFhwFR4U2NQTU9guHcmaDF2G'), collateralDecimalsDigits: new src_1.BN(9) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, //jlp sponsored oracleHash: covertToArray("c811abc82b4bad1f9bd711a2773ccaa935b03ecef974236942cec5e0eb845a3a"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('ECxo4ZF9zyTGVXq42wwnKboX4hFNmAyhyqnyCgxVAm4S'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, //wBTC sponsored oracleHash: covertToArray("c9d8b075a5c69303365ae23633d4e085199bf5c520a3b90fed1322a0342ffc33"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('EccEMczcuRzqFNzjCwhwUia6iyhpAkb5xhrnfUZW8qNs'), collateralDecimalsDigits: new src_1.BN(8) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // FWOG oracleHash: covertToArray("0x656cc2a39dd795bdecb59de810d4f4d1e74c25fe4c42d0bf1c65a38d74df48e9"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('6baJDBjALvdiEzzu29mKXsvkMFqp8H98xVA6TwrxWEkJ'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Switchboard, // PUPS oracleHash: [...new src_1.web3.PublicKey("9HA48WDk3pAWyP8waKRNXdGc9umDgjMrjBPEbqJmMn2t").toBuffer()], lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('GznbWwW7mysQZPXEawA1H6zJvrcBEqosw9BFt2drH6NC'), collateralDecimalsDigits: new src_1.BN(9) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, //SPX oracleHash: covertToArray("0x8414cfadf82f6bed644d2e399c11df21ec0131aa574c56030b132113dbbf3a0a"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('CZ9CoxJhcBfxYuGJamS6GDmmhTg9gXRuDfh7ahndvDwW'), collateralDecimalsDigits: new src_1.BN(8) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, //BONK oracleHash: covertToArray("0x72b021217ca3fe68922a19aaf990109cb9d84e9ad004b4d2025ad6f529314419"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('DoKjrVCQVFhYSDcerWJfds4DRWLqjxwM5aVmnoJdNLG7'), collateralDecimalsDigits: new src_1.BN(5) }, { oracleFeedType: types_1.OraclePriceFeedType.Switchboard, //FLP. 1 oracleHash: [...new src_1.web3.PublicKey("CCBFXeNL8CAbBJ4SxoqZfGzZfQHZFL5Hmt1S6C5JaFs1").toBuffer()], lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('QMCkMN3jLJLgE19FhEjDfdfpkNgQTe4XTmoVzuoFrSc'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Switchboard, //FLP. 4 oracleHash: [...new src_1.web3.PublicKey("BT6VnhBWxWwyCFD8ighgjCThF1LxLiwQxjwNJYHFe3QS").toBuffer()], lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('6cWrddVSJcs3CMfynARHzD12osVhSx6ocADK5HtUFLpi'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Switchboard, //ySOl oracleHash: [...new src_1.web3.PublicKey("JAju6eVpqTmtQTLUjVBUS6rr346G5tejQ5WdTcPTtGem").toBuffer()], // lendingTokenType: types_1.LendingTokenType.BanxSol, hadoMarketKey: new src_1.web3.PublicKey('9mvJTtf3vZvypWsJG4n7D4eyZKmUeEQhaSzoP987666s'), collateralDecimalsDigits: new src_1.BN(9) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, //JUP oracleHash: covertToArray("0x0a0408d619e9380abad35060f9192039ed5042fa6f82301d0e48bb52be830996"), // sponsored 7dbob1psH1iZBS7qPsm3Kwbf5DzSXK8Jyg31CTgTnxH5 lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('C8JcJjnFKCpgRJwrFAoPGA8AwyGtniPFhziy2sMBmyMH'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, //RAy oracleHash: covertToArray("0x91568baa8beb53db23eb3fb7f22c6e8bd303d103919e19733f2bb642d3e7987a"), // sponsored Hhipna3EoWR7u8pDruUg8RxhP5F6XLh6SEHMVDmZhWi8 lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('4xYRyFxBbUKJv4HHQoQdSfJfGpcL6rXWzBsoq8EJkzeg'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Switchboard, //LFNTY oracleHash: [...new src_1.web3.PublicKey("GEEcVRycWo8y6K4RvgpR9gELKXtwZsxi7V68Prd6UueF").toBuffer()], lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('HnpPnGkhca1z6aXLsJmeiJzBUuyjZNxFyQABMfbLiXWN'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Switchboard, //ADX oracleHash: [...new src_1.web3.PublicKey("FyboNvAs5oAer9w1hFJFmftdpS7LXtwC31XWhoXTmabN").toBuffer()], lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('BzVavgZAL2zXL9twcEHT5WDq8kHdpjXS7pYwvXYbsjtg'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Switchboard, // CHONKY oracleHash: [...new src_1.web3.PublicKey("DAtjGWL7QnntSf9eyk9QuwuEZgVs3smw2c4b448dnymn").toBuffer()], lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('FqD8HpQEZ8n1SRc5fnpSi1LDrhZbySioR8MvAy2erCt4'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // PYTH oracleHash: covertToArray("0bbf28e9a841a1cc788f6a361b17ca072d0ea3098a1e5df1c3922d06719579ff"), //sponsored 8vjchtMuJNY4oFQdTi8yCe6mhCaNBFaUbktT482TpLPS lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('6PjcsPHPQL6zLnhd1RjmNhiJoJbsuTxd1Q3PA3AAKuat'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // TNSR oracleHash: covertToArray("05ecd4597cd48fe13d6cc3596c62af4f9675aee06e2e0b94c06d8bee2b659e05"), //sponsored 9TSGDwcPQX4JpAvZbu2Wp5b68wSYkQvHCvfeBjYcCyC lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('6tfugHVwM71uMoqmKTiAEXN7oYMzGr3Y1HuitMyzaPpY'), collateralDecimalsDigits: new src_1.BN(9) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // CLOUD oracleHash: covertToArray("0x7358313661dcd4f842a1423aa4f7a05f009001c9113201c719621d3f1aa80a73"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('2c8LWuMgR5SmdWqjsCNeDbcYQNRZca6oyvGxw3QZTdcV'), collateralDecimalsDigits: new src_1.BN(9) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // KMNO oracleHash: covertToArray("b17e5bc5de742a8a378b54c9c75442b7d51e30ada63f28d9bd28d3c0e26511a0"), //sponsored ArjngUHXrQPr1wH9Bqrji9hdDQirM6ijbzc1Jj1fXUk7 lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('2aACrdqDhrkYMoRjyRFe532XzifbMyqh3ov3ze3DX8JF'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // JTO oracleHash: covertToArray("b43660a5f790c69354b0729a5ef9d50d68f1df92107540210b9cccba1f947cc2"), //sponsored 7ajR2zA4MGMMTqRAVjghTKqPPn4kbrj3pYkAVRVwTGzP lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('4XQCJAaBBg5aopxH115yhwh98cXDLnTMeKtTrxbgABLV'), collateralDecimalsDigits: new src_1.BN(9) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // DRIFT oracleHash: covertToArray("0x5c1690b27bb02446db17cdda13ccc2c1d609ad6d2ef5bf4983a85ea8b6f19d07"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('2ScWEdGft4YxxwX3N72brufsg5ALcVhKJiAmYmCiNEpa'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // Mag Eden oracleHash: covertToArray("0x91519e3e48571e1232a85a938e714da19fe5ce05107f3eebb8a870b2e8020169"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('AVeixFSRi1Si5gUfvHjChRAT4REyysxTpJLFHmjTfkaK'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // W oracleHash: covertToArray("eff7446475e218517566ea99e72a4abec2e1bd8498b43b7d8331e29dcb059389"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('7KXFaAaRPipL9jMCqGtsD8iSFw8MsZ8wTjsiSnkx2qob'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Switchboard, // DOG oracleHash: [...new src_1.web3.PublicKey("9VBcS82VHrjSySowNSfLeHCgcHyLNTwKpBu6wzjxL9Av").toBuffer()], lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('89fGpcM7SPoZNdxL7VBon8Vvhr7VcauunYsPCrkeGCS5'), collateralDecimalsDigits: new src_1.BN(5) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // ORCA oracleHash: covertToArray("0x37505261e557e251290b8c8899453064e8d760ed5c65a779726f2490980da74c"), // sponsored 4CBshVeNBEXz24GZpoj8SrqP5L7VGG3qjGd6tCST1pND lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('9ZZRniyyTDZpFURSNsZanaqQNdSWKM5GT1buSjcoSZ9Q'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // WEN oracleHash: covertToArray("0x5169491cd7e2a44c98353b779d5eb612e4ac32e073f5cc534303d86307c2f1bc"), // sponsored CsG7wXoqZKNxx4UnFtvozfwXQ9RgpKe7zSJa4LWh5MT9 lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('GrzEwF5tM9hnk2bKWt25j8eijCfV5YQrpp6d9RaZ2SCb'), collateralDecimalsDigits: new src_1.BN(5) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // PENGU oracleHash: covertToArray("bed3097008b9b5e3c93bec20be79cb43986b85a996475589351a21e67bae9b61"), // sponsored 27zzC5wXCeZeuJ3h9uAJzV5tGn6r5Tzo98S1ZceYKEb8 lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('GjDujZVjvZ3iTami2tBsTe6ELvQS9UbrdiLTSBKGk8FU'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // ai16z oracleHash: covertToArray("2551eca7784671173def2c41e6f3e51e11cd87494863f1d208fdd8c64a1f85ae"), // sponsored BxizdE1Rd9yeCXUaorGNGLc4qHbqBULxiBtjRX37HjSV lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('5EP3mikxUGFLQzxUT8B8a751ku2w7NxCaLXhWP6PXsKh'), collateralDecimalsDigits: new src_1.BN(9) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // TRUMP oracleHash: covertToArray("879551021853eec7a7dc827578e8e69da7e4fa8148339aa0d3d5296405be4b1a"), // sponsored 9vNb2tQoZ8bB4vzMbQLWViGwNaDJVtct13AGgno1wazp lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('DA2Rpvgrs2MNBgao9hPYTswAqLq2Ecp6PoVdwUx1H6cQ'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // WIF oracleHash: covertToArray("4ca4beeca86f0d164160323817a4e42b10010a724c2217c6ee41b54cd4cc61fc"), // sponsored 6B23K3tkb51vLZA14jcEQVCA1pfHptzEHFA93V5dYwbT lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('562dKXdfjCohbMWdMeKKCztz7ZhvPF2aD3Sv7YP7tdXx'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // MEW oracleHash: covertToArray("514aed52ca5294177f20187ae883cec4a018619772ddce41efcc36a6448f5d5d"), // sponsored EF6U755BdHMXim8RBw6XSC6Yk6XaouTKpwcBZ7QkcanB lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('D9vHcfBZG7igqTqauQxmAQvEozhCRnhP4bETmSPDv4DD'), collateralDecimalsDigits: new src_1.BN(5) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // mSol oracleHash: covertToArray("c2289a6a43d2ce91c6f55caec370f4acc38a2ed477f58813334c6d03749ff2a4"), // sponsored 5CKzb9j4ChgLUt8Gfm5CNGLN6khXKiqMbnGAW4cgXgxK lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('9wvrDV8X2UJQbVAdWsCDgHpekUtwEs16fYv2SNk5Zg1A'), collateralDecimalsDigits: new src_1.BN(9) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // JitoSol oracleHash: covertToArray("67be9f519b95cf24338801051f9a808eff0a578ccb388db73b7f6fe1de019ffb"), // sponsored AxaxyeDT8JnWERSaTKvFXvPKkEdxnamKSqpWbsSjYg1g lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('GqDfeXC4r25kbJ4euDhqzLXo9eh6tUTyAvPorkLkgQGu'), collateralDecimalsDigits: new src_1.BN(9) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // GMT oracleHash: covertToArray("0xbaa284eaf23edf975b371ba2818772f93dbae72836bbdea28b07d40f3cf8b485"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('5xC9p4A9LCMkyWDQ2aGgpcnrrKFJHkbxYEh1FaJce14h'), collateralDecimalsDigits: new src_1.BN(9) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // SLERF oracleHash: covertToArray("0x1a483c4a63876d286991ac0d6e090298db42e88c3826b6e0cff89daca498eed5"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('2NrY6PBAh1SbrqiDYB73UZHdM7L4q8inbhq8vvJDuGi6'), collateralDecimalsDigits: new src_1.BN(9) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // ZEUS oracleHash: covertToArray("0x31558e9ccb18c151af6c52bf78afd03098a7aca1b9cf171a65b693b464c2f066"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('Ak36nrbMavEoBU4Q6GzLv2tXNCgRaQHFTyxGFALwaiyQ'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // vSol oracleHash: covertToArray("0x5872204cdf70b27802c86f1029c118560cd9b67a5f487f032f15d0e1dfd92560"), lendingTokenType: types_1.LendingTokenType.BanxSol, hadoMarketKey: new src_1.web3.PublicKey('4qkVPNeqVo2SzmSQJZ2ChTFqAkrRQ5npnKM8J1ygiKrz'), collateralDecimalsDigits: new src_1.BN(9) }, { oracleFeedType: types_1.OraclePriceFeedType.Switchboard, // Mim oracleHash: [...new src_1.web3.PublicKey("Dpd86uHHneAB1FuxG25QLvYFEQsBsnXExcdMFMAz3oLH").toBuffer()], // covertToArray("0x7aa41f6ee464616f3cbc469fddfd7e63d8db319b7bd585cc95b24c29c9172916"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('9ngz8XLk3g3npEneNRB1xG1QLg2mjgu6qXPu1BzJZ3Wx'), collateralDecimalsDigits: new src_1.BN(2) }, ]; const oracleInfoDev = [ { oracleFeedType: types_1.OraclePriceFeedType.Pyth, //jlp sponsored oracleHash: covertToArray("c811abc82b4bad1f9bd711a2773ccaa935b03ecef974236942cec5e0eb845a3a"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('GHMX8me6S4RGi5fs3VRpTS7VSrA5AdtwrqfM3uhKYnpr'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, //wBTC sponsored oracleHash: covertToArray("c9d8b075a5c69303365ae23633d4e085199bf5c520a3b90fed1322a0342ffc33"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('94BGvDVpgJG91sM82sYVBs8nWfCFcHzH5oVD7tVQ2Rzm'), collateralDecimalsDigits: new src_1.BN(8) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, // FWOG oracleHash: covertToArray("0x656cc2a39dd795bdecb59de810d4f4d1e74c25fe4c42d0bf1c65a38d74df48e9"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('7wMCorwccxcRmfWAsbFWuga6rbmvnXZ2LfgR9t7R3AKB'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Switchboard, // PUPS oracleHash: [...new src_1.web3.PublicKey("9HA48WDk3pAWyP8waKRNXdGc9umDgjMrjBPEbqJmMn2t").toBuffer()], lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('DcHakhk2sGdye2mSoZHLK95ysgp5RfLPhRVSLaqxzzHa'), collateralDecimalsDigits: new src_1.BN(9) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, //SPX oracleHash: covertToArray("0x8414cfadf82f6bed644d2e399c11df21ec0131aa574c56030b132113dbbf3a0a"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('caSwgnB1HqQdkzPCYisncdmm6Fqs9ne83TJ9jfYJuxc'), collateralDecimalsDigits: new src_1.BN(8) }, { oracleFeedType: types_1.OraclePriceFeedType.Pyth, //BONK oracleHash: covertToArray("0x72b021217ca3fe68922a19aaf990109cb9d84e9ad004b4d2025ad6f529314419"), lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('8JxL7yg7udh2tbhTzSYGnHCXSVr2UHDA2xZP1sBG3P75'), collateralDecimalsDigits: new src_1.BN(5) }, { oracleFeedType: types_1.OraclePriceFeedType.Switchboard, //FLP. 1 oracleHash: [...new src_1.web3.PublicKey("CCBFXeNL8CAbBJ4SxoqZfGzZfQHZFL5Hmt1S6C5JaFs1").toBuffer()], lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('7T1edU4DnCXQJG8CCumZekEZABMSkGfYrhDHeeqCoZtD'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.Switchboard, //FLP. 4 oracleHash: [...new src_1.web3.PublicKey("BT6VnhBWxWwyCFD8ighgjCThF1LxLiwQxjwNJYHFe3QS").toBuffer()], lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('AgohnkUukhBoZk7wUbEdcWPkLZnjFfYE9k7NbeY62Ytb'), collateralDecimalsDigits: new src_1.BN(6) }, { oracleFeedType: types_1.OraclePriceFeedType.None, //ySOl oracleHash: [...new src_1.web3.PublicKey(constants_1.EMPTY_PUBKEY).toBuffer()], //"JAju6eVpqTmtQTLUjVBUS6rr346G5tejQ5WdTcPTtGem" lendingTokenType: types_1.LendingTokenType.Usdc, hadoMarketKey: new src_1.web3.PublicKey('9sJoAbMF4DzQjmPgN1ZYs18BTTAQ3zW6GeX6UfU6d24h'), collateralDecimalsDigits: new src_1.BN(9) }, ]; const oracleInfo = onDev ? oracleInfoDev : oracleInfoProd; for (let i = 0; i < oracleInfo.length; i++) { const oracle = oracleInfo[i]; // console.log("Updating Oracle: ", i); const market = hadoMarkets.find(market => market.publicKey.toString() === oracle.hadoMarketKey.toString()); if (market) { let oracleFeedInMarketRaw = oracle.lendingTokenType === types_1.LendingTokenType.BanxSol ? market.priceFeedSolana : market.priceFeedUsdc; let oracleTypeInMarket = oracle.lendingTokenType === types_1.LendingTokenType.BanxSol ? market.solanaOracleFeedType : market.usdcOracleFeedType; let oracleFeedInMarket = Object.values(oracleFeedInMarketRaw); // console.log("oracleFeedInMarket:", oracleFeedInMarket); // console.log("Type:", typeof oracleFeedInMarket); if ((activateOracle && oracleTypeInMarket === types_1.OraclePriceFeedType.None) || (!activateOracle && oracleTypeInMarket != types_1.OraclePriceFeedType.None) || (!oracleFeedInMarket.every((value, index) => value === oracle.oracleHash[index]))) { console.log("Updating Oracle: ", i); const result = yield (0, perpetual_1.updateSplOracleMarket)({ connection: connection, accounts: { hadoMarket: oracle.hadoMarketKey, userPubkey: userKeypair.publicKey, }, sendTxn: sendTxnUserDevnet, args: { collateralDecimalsDigits: oracle.collateralDecimalsDigits, priceFeedSolana: oracle.lendingTokenType === types_1.LendingTokenType.BanxSol ? oracle.oracleHash : [...constants_1.EMPTY_PUBKEY.toBytes()], priceFeedUsdc: oracle.lendingTokenType === types_1.LendingTokenType.Usdc ? oracle.oracleHash : [...constants_1.EMPTY_PUBKEY.toBytes()], solanaOracleFeedType: oracle.lendingTokenType === types_1.LendingTokenType.BanxSol && activateOracle ? oracle.oracleFeedType : types_1.OraclePriceFeedType.None, usdcOracleFeedType: oracle.lendingTokenType === types_1.LendingTokenType.Usdc && activateOracle ? oracle.oracleFeedType : types_1.OraclePriceFeedType.None, } }); console.log("Updating Oracle: ", i, " Done"); const transaction = new src_1.web3.Transaction(); for (let instruction of result.instructions) transaction.add(instruction); // await sendTxnUserDevnet(transaction, []); } } else { console.log("Market not found: ", oracle.hadoMarketKey.toString()); continue; } } console.log("Oracle Update Done"); if (setOfferLtv) { console.log("Setting Offer LTV"); const offers = (yield program.account.bondOfferV3.all()).map(account => (0, helpers_1.anchorRawBNsAndPubkeysToNumsAndStrings)(account)); const offersToPatch = offers.filter(offer => oracleInfo.find(oracle => oracle.hadoMarketKey.toString() === offer.hadoMarket.toString() && (0, perpetual_1.getLendingTokenType)(offer.bondingCurve.bondingType) == oracle.lendingTokenType) && (offer.pairState == types_1.PairState.PerpetualBondingCurveOnMarket || offer.pairState == types_1.PairState.PerpetualListing || offer.pairState == types_1.PairState.PerpetualBondingCurveClosed || offer.pairState == types_1.PairState.PerpetualMigrated) && (Number(offer.offerLtvBp) == 0 || Number(offer.liquidationLtvBp) == 0)); let chunk = chunks(offersToPatch, 1); 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 offer = tempChunk[index]; console.log(offer.publicKey.toString()); const oracle = oracleInfo.find(oracle => oracle.hadoMarketKey.toString() === offer.hadoMarket.toString() && (0, perpetual_1.getLendingTokenType)(offer.bondingCurve.bondingType) == oracle.lendingTokenType); if (oracle) { let dataSet = (0, perpetual_1.getLendingTokenType)(offer.bondingCurve.bondingType) == types_1.LendingTokenType.BanxSol ? solMarketData : usdcMarketData; const oraclePub = dataSet.find(tempData => tempData.marketPubkey === offer.hadoMarket.toString()).collateral.oraclePriceFeed; // console.log(oraclePub, oracle.hadoMarketKey) const result = yield (0, migration_1.migrateOfferHadoMarket)({ connection: connection, accounts: { hadoMarket: new src_1.web3.PublicKey(offer.hadoMarket), userPubkey: userKeypair.publicKey, offer: new src_1.web3.PublicKey(offer.publicKey), typeFeed: oracle.oracleFeedType, oracle: new src_1.web3.PublicKey(oraclePub) }, sendTxn: sendTxnUserMock, programId: program.programId, }); instructions.push(...result.instructions); } } for (let instruction of [...instructions]) tr.add(instruction); yield sendTxnUserDevnet(tr, []); } } console.log("Offer LTV Done"); }))();