Semantics improvements

This commit is contained in:
Aleksandr Kraiz
2023-05-18 22:33:20 +04:00
parent dba7169828
commit ab36c0b26b
21 changed files with 71 additions and 55 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@orionprotocol/sdk",
"version": "0.19.2",
"version": "0.19.3",
"description": "Orion Protocol SDK",
"main": "./lib/index.cjs",
"module": "./lib/index.js",

View File

@@ -10,6 +10,7 @@ import {
} from 'http-terminator';
import { ethers } from 'ethers';
import { simpleFetch } from 'simple-typed-fetch';
import { SERVICE_TOKEN } from '../index.js';
jest.setTimeout(10000);
const createServer = (externalHost: string) => {
@@ -271,7 +272,7 @@ describe('Orion', () => {
}, 10000);
unitBSC.aggregator.ws.subscribe('aobus', {
payload: 'ORN-USDT',
payload: `${SERVICE_TOKEN}-USDT`,
callback: () => {
resolve(true);
unitBSC.aggregator.ws.destroy();

View File

@@ -1,6 +1,7 @@
import { Wallet } from 'ethers';
import Orion from '../Orion/index.js';
import { SupportedChainId } from '../types.js';
import { SERVICE_TOKEN } from '../index.js';
const privateKey = process.env['PRIVATE_KEY']
if (privateKey === undefined) throw new Error('Private key is required');
@@ -13,7 +14,7 @@ describe('Bridge', () => {
const wallet = new Wallet(privateKey);
await orion.bridge.swap(
'ORN',
SERVICE_TOKEN,
0.12345678,
SupportedChainId.FANTOM_TESTNET,
SupportedChainId.BSC_TESTNET,

View File

@@ -1,5 +1,6 @@
import { ethers } from 'ethers';
import Orion from '../Orion/index.js';
import { SERVICE_TOKEN } from '../index.js';
const privateKey = process.env['PRIVATE_KEY'];
if (privateKey === undefined) throw new Error('Private key is required');
@@ -7,7 +8,7 @@ if (privateKey === undefined) throw new Error('Private key is required');
jest.setTimeout(30000);
describe('Transfers', () => {
test('Deposit ORN', async () => {
test(`Deposit ${SERVICE_TOKEN}`, async () => {
const orion = new Orion('testing');
const bscUnit = orion.getUnit('bsc');
const wallet = new ethers.Wallet(
@@ -16,13 +17,13 @@ describe('Transfers', () => {
);
await bscUnit.exchange.deposit({
asset: 'ORN',
asset: SERVICE_TOKEN,
amount: 20,
signer: wallet,
});
});
test('Withdraw ORN', async () => {
test(`Withdraw ${SERVICE_TOKEN}`, async () => {
const orion = new Orion('testing');
const bscUnit = orion.getUnit('bsc');
const wallet = new ethers.Wallet(
@@ -31,7 +32,7 @@ describe('Transfers', () => {
);
await bscUnit.exchange.withdraw({
asset: 'ORN',
asset: SERVICE_TOKEN,
amount: 20,
signer: wallet,
});

View File

@@ -1,5 +1,6 @@
import { ethers } from 'ethers';
import Orion from '../Orion/index.js';
import { SERVICE_TOKEN } from '../index.js';
const privateKey = process.env['PRIVATE_KEY']
if (privateKey === undefined) throw new Error('Private key is required');
@@ -7,7 +8,7 @@ if (privateKey === undefined) throw new Error('Private key is required');
jest.setTimeout(30000);
describe('Pools', () => {
test('Add liquidity ORN', async () => {
test(`Add liquidity ${SERVICE_TOKEN}`, async () => {
const orion = new Orion('testing');
const bscUnit = orion.getUnit('bsc');
const wallet = new ethers.Wallet(
@@ -16,14 +17,14 @@ describe('Pools', () => {
);
await bscUnit.farmingManager.addLiquidity({
amountAsset: 'ORN',
poolName: 'ORN-USDT',
amountAsset: SERVICE_TOKEN,
poolName: `${SERVICE_TOKEN}-USDT`,
amount: 20,
signer: wallet,
});
});
test('Remove liquidity ORN', async () => {
test(`Remove liquidity ${SERVICE_TOKEN}`, async () => {
const orion = new Orion('testing');
const bscUnit = orion.getUnit('bsc');
const wallet = new ethers.Wallet(
@@ -32,7 +33,7 @@ describe('Pools', () => {
);
await bscUnit.farmingManager.removeAllLiquidity({
poolName: 'ORN-USDT',
poolName: `${SERVICE_TOKEN}-USDT`,
signer: wallet,
});
});

View File

@@ -1,10 +1,11 @@
import Orion from '../Orion/index.js';
import { SERVICE_TOKEN } from '../index.js';
describe('Price Feed', () => {
test('Ticker', async () => {
const { unitsArray } = new Orion('testing');
for (const unit of unitsArray) {
const ticker = 'ORN-USDT';
const ticker = `${SERVICE_TOKEN}-USDT`;
await new Promise((resolve, reject) => {
const timeout = setTimeout(() => {
reject(new Error('Timeout'));

View File

@@ -1,6 +1,7 @@
import { ethers } from 'ethers';
import Orion from '../Orion/index.js';
import swapMarket from '../Unit/Exchange/swapMarket.js';
import { SERVICE_TOKEN } from '../index.js';
const privateKey = process.env['PRIVATE_KEY']
if (privateKey === undefined) throw new Error('Private key is required');
@@ -17,7 +18,7 @@ describe('Spot trading', () => {
);
const result = await swapMarket({
assetIn: 'ORN',
assetIn: SERVICE_TOKEN,
assetOut: 'USDT',
amount: 20,
type: 'exactSpend',
@@ -42,7 +43,7 @@ describe('Spot trading', () => {
const result = await bscUnit.exchange.swapMarket({
assetIn: 'USDT',
assetOut: 'ORN',
assetOut: SERVICE_TOKEN,
amount: 20,
type: 'exactReceive',
signer: wallet,

View File

@@ -5,6 +5,7 @@ export default [
'BINANCE',
'KUCOIN',
'ORION', // Internal
'INTERNAL_CEX',
// DEXes
'SPOOKYSWAP',
@@ -12,6 +13,7 @@ export default [
'UNISWAP',
'QUICKSWAP',
'ORION_POOL',
'INTERNAL_DEX',
'CHERRYSWAP',
'OKXSWAP',
'CURVE',

View File

@@ -10,6 +10,7 @@ const mapping: Record<
BINANCE: 'Binance',
KUCOIN: 'KuCoin',
ORION: 'Orion', // Internal
INTERNAL_CEX: 'Internal',
// DEXes
SPOOKYSWAP: 'SpookySwap',
@@ -17,6 +18,7 @@ const mapping: Record<
UNISWAP: 'Uniswap',
QUICKSWAP: 'QuickSwap',
ORION_POOL: 'Orion Pool',
INTERNAL_DEX: 'Orion Pool',
CHERRYSWAP: 'CherrySwap',
OKXSWAP: 'OKXSwap',
CURVE: 'Curve',

View File

@@ -9,3 +9,5 @@ export { default as exchangesMap } from './exchangesMap.js';
export * from './chains.js';
export * from './precisions.js';
export * from './gasLimits.js';
export const SERVICE_TOKEN = 'ORN';

View File

@@ -71,7 +71,11 @@ const selfBrokerSchema = z.custom<SelfBroker>((value) => {
return false;
});
const brokerAddressSchema = z.enum(['ORION_BROKER', 'SELF_BROKER'])
const brokerAddressSchema = z.enum([
'INTERNAL_BROKER',
'ORION_BROKER',
'SELF_BROKER'
])
.or(selfBrokerSchema)
.or(z.string().refine(ethers.utils.isAddress, (value) => ({
message: `subOrder.subOrders.[n].brokerAddress must be an address, got ${value}`,

View File

@@ -2,11 +2,11 @@ import { z } from 'zod';
const governanceContractsSchema = z.object({
controllerAddress: z.string(),
veORNAddress: z.string(),
veORNYieldDistributorV4Address: z.string(),
orionGaugeORNRewardsDistributorAddress: z.string(),
veTOKENAddress: z.string(),
veTOKENYieldDistributorV4Address: z.string(),
orionGaugeTOKENRewardsDistributorAddress: z.string(),
time_total: z.string(),
absolute_ve_orn_in_voting: z.string(),
absolute_ve_token_in_voting: z.string(),
info: z.record(
z.string(),
z.object({

View File

@@ -3,7 +3,7 @@ import { z } from 'zod';
const candleSchema = z
.tuple([
z.string(), // interval [FIVE, FIFTEEN, THIRTY, HOUR, HOUR4, DAY, WEEK]
z.string(), // pair ["orn-usdt"]
z.string(), // pair ["btc-usdt"]
z.number(), // timeStart [timestamp]
z.number(), // timeEnd [timestamp]
z.string(), // close

View File

@@ -9,12 +9,12 @@ const aggregatedHistorySchema = z.object({
date_unix: z.number(),
date_time_local: z.string(),
date_time_utc: z.string(),
amount_orn: z.string(),
amount_orn_fmt: z.number(),
amount_token: z.string(),
amount_token_fmt: z.number(),
amount_usd: z.string(),
amount_usd_fmt: z.number(),
orn_price: z.string(),
orn_price_fmt: z.number()
token_price: z.string(),
token_price_fmt: z.number()
})),
pagination_info: z.object({
c_page: z.number(),

View File

@@ -3,27 +3,27 @@ import { z } from 'zod';
const claimInfoSchema = z.object({
global: z.object({
total_non_accrued: z.number(),
total_non_accrued_orn: z.number(),
total_non_accrued_token: z.number(),
total_non_accrued_usd: z.number()
}),
chain_to_reward_info: z.record(
z.string(),
z.object({
total_accrued: z.number(),
total_accrued_orn: z.number(),
total_accrued_token: z.number(),
total_accrued_usd: z.number(),
total_non_accrued: z.number(),
total_non_accrued_orn: z.number(),
total_non_accrued_token: z.number(),
total_non_accrued_usd: z.number(),
total_earned: z.number()
})
),
mini_stats: z.object({
earned_on_referrals_orn: z.number(),
earned_on_referrals_token: z.number(),
earned_on_referrals_usd: z.number(),
orn_usd: z.number(),
token_usd: z.number(),
registered_via_link_count: z.number(),
earned_in_a_week_orn: z.number(),
earned_in_a_week_token: z.number(),
earned_in_a_week_usd: z.number()
}),
});

View File

@@ -1,11 +1,11 @@
import { z } from 'zod';
const miniStatsSchema = z.object({
earned_on_referrals_orn: z.number(),
earned_on_referrals_token: z.number(),
earned_on_referrals_usd: z.number(),
orn_usd: z.number(),
token_usd: z.number(),
registered_via_link_count: z.number(),
earned_in_a_week_orn: z.number(),
earned_in_a_week_token: z.number(),
earned_in_a_week_usd: z.number(),
});

View File

@@ -10,8 +10,8 @@ const ratingSchema = z.object({
personal_info: z.object({
rank_id: z.number(),
wallet: z.string(),
staked_ve_orn: z.string(),
staked_ve_orn_fmt: z.number(),
staked_ve_token: z.string(),
staked_ve_token_fmt: z.number(),
weighted_volume: z.string(),
weighted_volume_fmt: z.number(),
total_weight: z.string(),
@@ -23,8 +23,8 @@ const ratingSchema = z.object({
list: z.array(z.object({
rank_id: z.number(),
wallet: z.string(),
staked_ve_orn: z.string(),
staked_ve_orn_fmt: z.number(),
staked_ve_token: z.string(),
staked_ve_token_fmt: z.number(),
weighted_volume: z.string(),
weighted_volume_fmt: z.number(),
total_weight: z.string(),

View File

@@ -5,7 +5,7 @@ const rewardsMappingSchema = z.object({
z.object({
distribution: z.object({
dist: z.object({
orion: z.number(),
underlying_token: z.number(),
referers_list: z.array(z.number()),
}),
address_to_reward_mapping: z.record(z.string(), z.number()),

View File

@@ -5,23 +5,23 @@ import calculateServiceFeeInFeeAsset from './calculateServiceFeeInFeeAsset.js';
const calculateFeeInFeeAsset = (
amount: BigNumber.Value,
feeAssetPriceInOrn: BigNumber.Value,
baseAssetPriceInOrn: BigNumber.Value,
baseCurrencyPriceInOrn: BigNumber.Value,
feeAssetPriceInServiceToken: BigNumber.Value,
baseAssetPriceInServiceToken: BigNumber.Value,
baseCurrencyPriceInServiceToken: BigNumber.Value,
gasPriceGwei: BigNumber.Value,
feePercent: BigNumber.Value,
) => {
const serviceFeeInFeeAsset = calculateServiceFeeInFeeAsset(
amount,
feeAssetPriceInOrn,
baseAssetPriceInOrn,
feeAssetPriceInServiceToken,
baseAssetPriceInServiceToken,
feePercent,
);
const networkFeeInFeeAsset = calculateNetworkFeeInFeeAsset(
gasPriceGwei,
FILL_ORDERS_GAS_LIMIT,
baseCurrencyPriceInOrn,
feeAssetPriceInOrn,
baseCurrencyPriceInServiceToken,
feeAssetPriceInServiceToken,
);
return {

View File

@@ -4,16 +4,16 @@ import calculateNetworkFee from './calculateNetworkFee.js';
const calculateNetworkFeeInFeeAsset = (
gasPriceGwei: BigNumber.Value,
gasLimit: BigNumber.Value,
baseCurrencyPriceInOrn: BigNumber.Value,
feeAssetPriceInOrn: BigNumber.Value,
baseCurrencyPriceInServiceToken: BigNumber.Value,
feeAssetPriceInServiceToken: BigNumber.Value,
) => {
const networkFee = calculateNetworkFee(gasPriceGwei, gasLimit);
const networkFeeInOrn = new BigNumber(networkFee).multipliedBy(baseCurrencyPriceInOrn);
const networkFeeInFeeAsset = networkFeeInOrn
const networkFeeInServiceToken = new BigNumber(networkFee).multipliedBy(baseCurrencyPriceInServiceToken);
const networkFeeInFeeAsset = networkFeeInServiceToken
.multipliedBy(
new BigNumber(1)
.div(feeAssetPriceInOrn),
.div(feeAssetPriceInServiceToken),
);
return networkFeeInFeeAsset.toString();

View File

@@ -2,14 +2,14 @@ import { BigNumber } from 'bignumber.js';
export default function calculateServiceFeeInFeeAsset(
amount: BigNumber.Value,
feeAssetPriceInOrn: BigNumber.Value,
baseAssetPriceInOrn: BigNumber.Value,
feeAssetPriceInServiceToken: BigNumber.Value,
baseAssetPriceInServiceToken: BigNumber.Value,
feePercent: BigNumber.Value,
) {
const result = new BigNumber(amount)
.multipliedBy(new BigNumber(feePercent).div(100))
.multipliedBy(baseAssetPriceInOrn)
.multipliedBy(new BigNumber(1).div(feeAssetPriceInOrn))
.multipliedBy(baseAssetPriceInServiceToken)
.multipliedBy(new BigNumber(1).div(feeAssetPriceInServiceToken))
.toString();
return result;