fbonds-core
Version:
Banx protocol sdk
483 lines (482 loc) • 30.3 kB
JavaScript
"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");
}))();