@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
JavaScript
;
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