UNPKG

client-aftermath-ts-sdk

Version:
77 lines (76 loc) 4 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 }); exports.OracleApi = void 0; const transactions_1 = require("@mysten/sui/transactions"); const utils_1 = require("../../../general/utils"); const sui_1 = require("../../sui"); const eventsApiHelpers_1 = require("../../../general/apiHelpers/eventsApiHelpers"); class OracleApi { // ========================================================================= // Constructor // ========================================================================= constructor(Provider) { this.Provider = Provider; // ========================================================================= // Inspections // ========================================================================= this.fetchPrice = (inputs) => __awaiter(this, void 0, void 0, function* () { const tx = new transactions_1.Transaction(); this.getPriceTx(Object.assign(Object.assign({}, inputs), { tx })); const priceBytes = yield this.Provider.Inspections().fetchFirstBytesFromTxOutput({ tx, }); const price = utils_1.Casting.bigIntFromBytes(priceBytes); return utils_1.Casting.IFixed.numberFromIFixed(price); }); // ========================================================================= // Transaction Commands // ========================================================================= this.getPriceTx = (inputs) => { const { tx, priceFeedId } = inputs; return tx.moveCall({ target: utils_1.Helpers.transactions.createTxTarget(this.addresses.packages.oracleReader, "oracle_reader", "get_average_price_for_all_sources"), typeArguments: [], arguments: [ tx.object(priceFeedId), tx.object(sui_1.Sui.constants.addresses.suiClockId), tx.pure.u64(utils_1.Casting.u64MaxBigInt), tx.pure.bool(false), tx.pure.bool(false), // may abort ], }); }; // ========================================================================= // Private // ========================================================================= // ========================================================================= // Event Types // ========================================================================= this.eventType = (eventName) => eventsApiHelpers_1.EventsApiHelpers.createEventType(this.addresses.packages.events, OracleApi.constants.moduleNames.events, eventName); const addresses = this.Provider.addresses.oracle; if (!addresses) throw new Error("not all required addresses have been set in provider"); this.addresses = addresses; this.eventTypes = { updatedPriceFeed: this.eventType("UpdatedPriceFeed"), }; } } exports.OracleApi = OracleApi; // ========================================================================= // Class Members // ========================================================================= OracleApi.constants = { moduleNames: { events: "events", }, };