UNPKG

@mak201010/bluefin-v2-client

Version:

The Bluefin client Library allows traders to sign, create, retrieve and listen to orders on Bluefin Exchange.

174 lines 7.01 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()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createWallet = exports.setupTestAccounts = exports.readFile = exports.getSignerFromSeed = exports.getKeyPairFromSeed = exports.generateRandomNumber = void 0; const library_sui_1 = require("@mak201010/library-sui"); const fs_1 = __importDefault(require("fs")); const deployment_json_1 = __importDefault(require("../deployment.json")); /** * Generates random number * @param multiplier number to multiply with random number generated * @returns random number */ const generateRandomNumber = (multiplier) => { return Math.floor((Date.now() + Math.random() + Math.random()) * multiplier); }; exports.generateRandomNumber = generateRandomNumber; function getKeyPairFromSeed(seed, scheme = "Secp256k1") { switch (scheme) { case "ED25519": return library_sui_1.Ed25519Keypair.deriveKeypair(seed); case "Secp256k1": return library_sui_1.Secp256k1Keypair.deriveKeypair(seed); default: throw new Error("Provided scheme is invalid"); } } exports.getKeyPairFromSeed = getKeyPairFromSeed; function getSignerFromSeed(seed) { return getKeyPairFromSeed(seed); } exports.getSignerFromSeed = getSignerFromSeed; function readFileServer(filePath) { return fs_1.default.existsSync(filePath) ? JSON.parse(fs_1.default.readFileSync(filePath).toString()) : {}; } function readFileBrowser() { return deployment_json_1.default; } function readFile(filePath) { return typeof window === "undefined" ? readFileServer(filePath) : readFileBrowser(); } exports.readFile = readFile; function setupTestAccounts(deployerWallet, testWallets, faucetURL) { return __awaiter(this, void 0, void 0, function* () { const mintAmount = 1000000000; // eslint-disable-next-line no-restricted-syntax for (const wallet of testWallets) { try { // eslint-disable-next-line no-await-in-loop yield library_sui_1.Faucet.requestSUI(wallet.privateAddress, faucetURL); } catch (e) { console.log(e); } } // eslint-disable-next-line no-restricted-syntax for (const wallet of testWallets) { // eslint-disable-next-line no-await-in-loop yield deployerWallet.mintUSDC({ amount: (0, library_sui_1.toBigNumberStr)(mintAmount.toString(), 6), to: wallet.privateAddress, gasBudget: 10000000, }); } return true; }); } exports.setupTestAccounts = setupTestAccounts; /** * @description * Generate a new wallet * @returns private key and public address * */ function createWallet() { const wallet = library_sui_1.Ed25519Keypair.generate(); const signerKey = wallet.export().privateKey; const publicAddress = wallet.toSuiAddress(); return { privateKey: Buffer.from(signerKey, "base64").toString("hex"), publicAddress, }; } exports.createWallet = createWallet; // export async function performTrade( // onChain: OnChainCalls, // deployerSigner: RawSigner, // makerOrder: OrderSignatureResponse, // takerOrder: OrderSignatureResponse, // tradePrice: number // ): Promise<[boolean, SuiTransactionBlockResponse]> { // const tx1 = await onChain.createSettlementOperator({ // operator: await deployerSigner.getAddress(), // gasBudget: 400000000, // }); // const settlementCapID = Transaction.getCreatedObjectIDs(tx1)[0]; // // Note: Assuming deployer is already price oracle operator // // make admin of the exchange price oracle operator // const tx2 = await onChain.setPriceOracleOperator({ // operator: await deployerSigner.getAddress(), // gasBudget: 400000000, // }); // const updateOPCapID = Transaction.getCreatedObjectIDs(tx2)[0]; // // set specific price on oracle // const tx3 = await onChain.updateOraclePrice({ // price: toBigNumberStr(tradePrice), // updateOPCapID, // perpID: onChain.getPerpetualID(makerOrder.symbol), // gasBudget: 400000000, // }); // let status = Transaction.getStatus(tx3); // const makerOnChainOrder: Order = { // market: onChain.getPerpetualID(makerOrder.symbol), // maker: makerOrder.maker, // isBuy: makerOrder.side === ORDER_SIDE.BUY, // reduceOnly: makerOrder.reduceOnly, // postOnly: makerOrder.postOnly, // orderbookOnly: makerOrder.orderbookOnly, // ioc: makerOrder.timeInForce === TIME_IN_FORCE.IMMEDIATE_OR_CANCEL, // quantity: toBigNumber(makerOrder.quantity), // price: toBigNumber(makerOrder.price), // leverage: toBigNumber(makerOrder.leverage), // expiration: toBigNumber(makerOrder.expiration), // salt: toBigNumber(makerOrder.salt), // }; // const TakerOnChainOrder: Order = { // market: onChain.getPerpetualID(makerOrder.symbol), // maker: takerOrder.maker, // isBuy: takerOrder.side === ORDER_SIDE.BUY, // reduceOnly: takerOrder.reduceOnly, // postOnly: takerOrder.postOnly, // orderbookOnly: takerOrder.orderbookOnly, // ioc: takerOrder.timeInForce === TIME_IN_FORCE.IMMEDIATE_OR_CANCEL, // quantity: toBigNumber(takerOrder.quantity), // price: toBigNumber(takerOrder.price), // leverage: toBigNumber(takerOrder.leverage), // expiration: toBigNumber(takerOrder.expiration), // salt: toBigNumber(takerOrder.salt), // }; // const tx = await onChain.trade({ // makerOrder: makerOnChainOrder, // takerOrder: TakerOnChainOrder, // makerSignature: makerOrder.orderSignature, // takerSignature: takerOrder.orderSignature, // settlementCapID, // gasBudget: 400000000, // perpID: onChain.getPerpetualID(makerOrder.symbol), // }); // status = Transaction.getStatus(tx); // if (status === "success") { // console.log("Transaction success"); // return [true, tx]; // } // if (status === "failure") { // console.log("Error:", Transaction.getError(tx)); // return [false, tx]; // } // console.log("Transaction status %s", status); // return [false, tx]; // } //# sourceMappingURL=utils.js.map