@drift-labs/sdk-browser
Version:
SDK for Drift Protocol
90 lines (89 loc) • 3.88 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPublicKeyAndSourceFromOracleId = exports.getOracleId = exports.getOracleSourceFromNum = exports.getOracleSourceNum = void 0;
const web3_js_1 = require("@solana/web3.js");
const types_1 = require("../types");
function getOracleSourceNum(source) {
if ('pyth' in source)
return types_1.OracleSourceNum.PYTH;
if ('pyth1K' in source)
return types_1.OracleSourceNum.PYTH_1K;
if ('pyth1M' in source)
return types_1.OracleSourceNum.PYTH_1M;
if ('pythPull' in source)
return types_1.OracleSourceNum.PYTH_PULL;
if ('pyth1KPull' in source)
return types_1.OracleSourceNum.PYTH_1K_PULL;
if ('pyth1MPull' in source)
return types_1.OracleSourceNum.PYTH_1M_PULL;
if ('switchboard' in source)
return types_1.OracleSourceNum.SWITCHBOARD;
if ('quoteAsset' in source)
return types_1.OracleSourceNum.QUOTE_ASSET;
if ('pythStableCoin' in source)
return types_1.OracleSourceNum.PYTH_STABLE_COIN;
if ('pythStableCoinPull' in source)
return types_1.OracleSourceNum.PYTH_STABLE_COIN_PULL;
if ('prelaunch' in source)
return types_1.OracleSourceNum.PRELAUNCH;
if ('switchboardOnDemand' in source)
return types_1.OracleSourceNum.SWITCHBOARD_ON_DEMAND;
if ('pythLazer' in source)
return types_1.OracleSourceNum.PYTH_LAZER;
if ('pythLazer1K' in source)
return types_1.OracleSourceNum.PYTH_LAZER_1K;
if ('pythLazer1M' in source)
return types_1.OracleSourceNum.PYTH_LAZER_1M;
if ('pythLazerStableCoin' in source)
return types_1.OracleSourceNum.PYTH_LAZER_STABLE_COIN;
throw new Error('Invalid oracle source');
}
exports.getOracleSourceNum = getOracleSourceNum;
function getOracleSourceFromNum(sourceNum) {
if (sourceNum === types_1.OracleSourceNum.PYTH)
return 'pyth';
if (sourceNum === types_1.OracleSourceNum.PYTH_1K)
return 'pyth1K';
if (sourceNum === types_1.OracleSourceNum.PYTH_1M)
return 'pyth1M';
if (sourceNum === types_1.OracleSourceNum.PYTH_PULL)
return 'pythPull';
if (sourceNum === types_1.OracleSourceNum.PYTH_1K_PULL)
return 'pyth1KPull';
if (sourceNum === types_1.OracleSourceNum.PYTH_1M_PULL)
return 'pyth1MPull';
if (sourceNum === types_1.OracleSourceNum.SWITCHBOARD)
return 'switchboard';
if (sourceNum === types_1.OracleSourceNum.QUOTE_ASSET)
return 'quoteAsset';
if (sourceNum === types_1.OracleSourceNum.PYTH_STABLE_COIN)
return 'pythStableCoin';
if (sourceNum === types_1.OracleSourceNum.PYTH_STABLE_COIN_PULL)
return 'pythStableCoinPull';
if (sourceNum === types_1.OracleSourceNum.PRELAUNCH)
return 'prelaunch';
if (sourceNum === types_1.OracleSourceNum.SWITCHBOARD_ON_DEMAND)
return 'switchboardOnDemand';
if (sourceNum === types_1.OracleSourceNum.PYTH_LAZER)
return 'pythLazer';
if (sourceNum === types_1.OracleSourceNum.PYTH_LAZER_1K)
return 'pythLazer1K';
if (sourceNum === types_1.OracleSourceNum.PYTH_LAZER_1M)
return 'pythLazer1M';
if (sourceNum === types_1.OracleSourceNum.PYTH_LAZER_STABLE_COIN)
return 'pythLazerStableCoin';
throw new Error('Invalid oracle source');
}
exports.getOracleSourceFromNum = getOracleSourceFromNum;
function getOracleId(publicKey, source) {
return `${publicKey.toBase58()}-${getOracleSourceNum(source)}`;
}
exports.getOracleId = getOracleId;
function getPublicKeyAndSourceFromOracleId(oracleId) {
const [publicKey, source] = oracleId.split('-');
return {
publicKey: new web3_js_1.PublicKey(publicKey),
source: getOracleSourceFromNum(parseInt(source)),
};
}
exports.getPublicKeyAndSourceFromOracleId = getPublicKeyAndSourceFromOracleId;