From 65c21de2ddcd87d38984a17cbb590f5d138aacc6 Mon Sep 17 00:00:00 2001 From: Alex Kraiz Date: Wed, 27 Sep 2023 16:08:09 +0400 Subject: [PATCH 01/24] feat!: added `Integrator` service --- src/Orion/index.ts | 3 + src/Unit/index.ts | 9 +- src/__tests__/basic.test.ts | 3 + src/config/schemas/pureEnvSchema.ts | 3 + src/services/Integrator/constants.ts | 1 + src/services/Integrator/index.ts | 121 ++++++++++++++++++ .../schemas/basic-pool-info-schema.ts | 26 ++++ .../schemas/environment-response-schema.ts | 19 +++ .../schemas/get-pool-response-schema.ts | 21 +++ src/services/Integrator/schemas/index.ts | 4 + .../Integrator/schemas/info-schema.ts | 12 ++ .../schemas/list-nft-order-response-schema.ts | 10 ++ .../schemas/list-pool-response-schema.ts | 26 ++++ .../Integrator/schemas/pool-schema.ts | 33 +++++ .../Integrator/schemas/util-schemas.ts | 14 ++ src/types.ts | 6 + 16 files changed, 310 insertions(+), 1 deletion(-) create mode 100644 src/services/Integrator/constants.ts create mode 100644 src/services/Integrator/index.ts create mode 100644 src/services/Integrator/schemas/basic-pool-info-schema.ts create mode 100644 src/services/Integrator/schemas/environment-response-schema.ts create mode 100644 src/services/Integrator/schemas/get-pool-response-schema.ts create mode 100644 src/services/Integrator/schemas/index.ts create mode 100644 src/services/Integrator/schemas/info-schema.ts create mode 100644 src/services/Integrator/schemas/list-nft-order-response-schema.ts create mode 100644 src/services/Integrator/schemas/list-pool-response-schema.ts create mode 100644 src/services/Integrator/schemas/pool-schema.ts create mode 100644 src/services/Integrator/schemas/util-schemas.ts diff --git a/src/Orion/index.ts b/src/Orion/index.ts index 80dbbf1..b2a6b44 100644 --- a/src/Orion/index.ts +++ b/src/Orion/index.ts @@ -58,6 +58,9 @@ export default class Orion { priceFeed: { api: networkConfig.api + networkConfig.services.priceFeed.all, }, + integrator: { + api: networkConfig.api + networkConfig.services.integrator.http, + } }, }; }) diff --git a/src/Unit/index.ts b/src/Unit/index.ts index c8b4462..c9cc0f4 100644 --- a/src/Unit/index.ts +++ b/src/Unit/index.ts @@ -7,6 +7,7 @@ import Exchange from './Exchange/index.js'; import FarmingManager from './FarmingManager/index.js'; import { chains, envs } from '../config/index.js'; import type { networkCodes } from '../constants/index.js'; +import { IntegratorService } from '../services/Integrator/index.js'; type KnownConfig = { env: KnownEnv @@ -22,6 +23,8 @@ export default class Unit { public readonly blockchainService: BlockchainService; + public readonly integrator: IntegratorService; + public readonly aggregator: Aggregator; public readonly priceFeed: PriceFeed; @@ -58,6 +61,9 @@ export default class Unit { priceFeed: { api: networkConfig.api + networkConfig.services.priceFeed.all, }, + integrator: { + api: networkConfig.api + networkConfig.services.integrator.http, + } }, } } else { @@ -65,7 +71,7 @@ export default class Unit { } const chainInfo = chains[config.chainId]; if (!chainInfo) throw new Error('Chain info is required'); - + this.chainId = config.chainId; this.networkCode = chainInfo.code; this.contracts = chainInfo.contracts @@ -75,6 +81,7 @@ export default class Unit { this.provider.pollingInterval = 1000; this.blockchainService = new BlockchainService(this.config.services.blockchainService.http, this.config.basicAuth); + this.integrator = new IntegratorService(this.config.services.integrator.api, intNetwork); this.aggregator = new Aggregator( this.config.services.aggregator.http, this.config.services.aggregator.ws, diff --git a/src/__tests__/basic.test.ts b/src/__tests__/basic.test.ts index 6f8241b..c3c5c8a 100644 --- a/src/__tests__/basic.test.ts +++ b/src/__tests__/basic.test.ts @@ -177,6 +177,9 @@ describe('Orion', () => { priceFeed: { api: orionPriceFeedAPI + '/price-feed', }, + integrator: { + api: '', + } }, } } diff --git a/src/config/schemas/pureEnvSchema.ts b/src/config/schemas/pureEnvSchema.ts index 8838cd5..854e9f4 100644 --- a/src/config/schemas/pureEnvSchema.ts +++ b/src/config/schemas/pureEnvSchema.ts @@ -14,6 +14,9 @@ export const pureEnvNetworksSchema = z.object({ priceFeed: z.object({ all: z.string(), }), + integrator: z.object({ + http: z.string(), + }), }), rpc: z.string().optional(), liquidityMigratorAddress: z.string().optional(), diff --git a/src/services/Integrator/constants.ts b/src/services/Integrator/constants.ts new file mode 100644 index 0000000..00c0d3d --- /dev/null +++ b/src/services/Integrator/constants.ts @@ -0,0 +1 @@ +export const AVAILABLE_POOL_FEE = ['0.01', '0.05', '0.3', '1'] as const; diff --git a/src/services/Integrator/index.ts b/src/services/Integrator/index.ts new file mode 100644 index 0000000..ebb36ce --- /dev/null +++ b/src/services/Integrator/index.ts @@ -0,0 +1,121 @@ +import { + environmentResponseSchema, + getPoolResponseSchema, + listNFTOrderResponseSchema, + listPoolResponseSchema, +} from './schemas/index.js'; +import { fetchWithValidation } from 'simple-typed-fetch'; + +type BasePayload = { + chainId: number + jsonrpc: '1.0' +}; + +type GetEnvironmentPayload = BasePayload & { + model: 'Environment' + method: 'getEnvironment' + params: [] +}; + +type ListNFTOrderPayload = BasePayload & { + model: 'OrionV3NFTManager' + method: 'listNFTOrder' + params: [string] +}; + +type GetPoolInfoPayload = BasePayload & { + model: 'OrionV3Factory' + method: 'getPoolInfo' + params: [string, string, string] +}; + +type ListPoolPayload = BasePayload & { + model: 'OrionFarmV3' + method: 'listPool' + params: [string] +}; + +type Payload = + | GetEnvironmentPayload + | ListNFTOrderPayload + | GetPoolInfoPayload + | ListPoolPayload; + +class IntegratorService { + private readonly apiUrl: string; + + private readonly chainId: number; + + get api() { + return this.apiUrl; + } + + constructor(apiUrl: string, chainId: number) { + this.apiUrl = apiUrl; + this.chainId = chainId; + + this.getEnvironment = this.getEnvironment.bind(this); + this.listNFTOrder = this.listNFTOrder.bind(this); + this.getPoolInfo = this.getPoolInfo.bind(this); + this.listPool = this.listPool.bind(this); + } + + makeRPCPayload = (payload: Omit) => { + return JSON.stringify({ + ...payload, + chainId: this.chainId, + jsonrpc: '1.0', + }); + }; + + private readonly getEnvironment = () => { + return fetchWithValidation(this.apiUrl, environmentResponseSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: 'Environment', + method: 'getEnvironment', + params: [], + }), + }); + }; + + private readonly listNFTOrder = (address: string) => { + return fetchWithValidation(this.apiUrl, listNFTOrderResponseSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: 'OrionV3NFTManager', + method: 'listNFTOrder', + params: [address], + }), + }); + }; + + private readonly getPoolInfo = ( + token0: string, + token1: string, + poolAddress: string + ) => { + return fetchWithValidation(this.apiUrl, getPoolResponseSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: 'OrionV3Factory', + method: 'getPoolInfo', + params: [token0, token1, poolAddress], + }), + }); + } + + private readonly listPool = (address: string) => { + return fetchWithValidation(this.apiUrl, listPoolResponseSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: 'OrionFarmV3', + method: 'listPool', + params: [address], + }), + }); + } +} + +export * as schemas from './schemas/index.js'; +export { IntegratorService }; diff --git a/src/services/Integrator/schemas/basic-pool-info-schema.ts b/src/services/Integrator/schemas/basic-pool-info-schema.ts new file mode 100644 index 0000000..049c92f --- /dev/null +++ b/src/services/Integrator/schemas/basic-pool-info-schema.ts @@ -0,0 +1,26 @@ +import { z } from 'zod'; +import { evmAddressSchema } from './util-schemas.js'; + +const basicPoolInfo = z.object({ + poolAddress: evmAddressSchema, + isInitialized: z.boolean(), + liquidity: z.number().nonnegative(), + liquidityInUsd: z.number().nonnegative(), + liquidityShare: z.number().nonnegative(), + isFarming: z.boolean(), + rewardsTotal: z.number().nonnegative(), + rewardsPerPeriod: z.number().nonnegative(), + rewardsShare: z.number().nonnegative(), + feePerPeriod: z.number().nonnegative(), + feeTotal: z.number().nonnegative(), + feeShare: z.number().nonnegative(), + tickMultiplier: z.number().nonnegative(), + MAX_TICK: z.number().nonnegative().int(), + minAPR: z.number().nonnegative(), + maxAPR: z.number().nonnegative(), + avgAPR: z.number().nonnegative(), + maxBoost: z.number().nonnegative().int(), + feeRate: z.array(z.number().nonnegative()), +}); + +export default basicPoolInfo; diff --git a/src/services/Integrator/schemas/environment-response-schema.ts b/src/services/Integrator/schemas/environment-response-schema.ts new file mode 100644 index 0000000..5da5cd2 --- /dev/null +++ b/src/services/Integrator/schemas/environment-response-schema.ts @@ -0,0 +1,19 @@ +import { z } from 'zod'; +import { evmAddressSchema } from './util-schemas.js'; +import infoSchema from './info-schema.js'; + +const environmentResponseSchema = z.object({ + result: z.object({ + chainId: z.number().int().nonnegative(), + nativeToken: z.string(), + OrionV3Factory: evmAddressSchema, + OrionV3NFTManager: evmAddressSchema, + SwapRouter: evmAddressSchema, + OrionFarmV3: evmAddressSchema, + OrionVoting: evmAddressSchema, + veORN: evmAddressSchema, + }), + info: infoSchema, +}); + +export default environmentResponseSchema; diff --git a/src/services/Integrator/schemas/get-pool-response-schema.ts b/src/services/Integrator/schemas/get-pool-response-schema.ts new file mode 100644 index 0000000..ee49682 --- /dev/null +++ b/src/services/Integrator/schemas/get-pool-response-schema.ts @@ -0,0 +1,21 @@ +import { z } from 'zod'; +import { evmAddressSchema } from './util-schemas.js'; +import { AVAILABLE_POOL_FEE } from '../constants.js'; +import basicPoolInfo from './basic-pool-info-schema.js'; +import infoSchema from './info-schema.js'; + +const getPoolResponseSchema = z.object({ + result: z.object({ + token0: z.string().nonempty(), + token1: z.string().nonempty(), + token0Address: evmAddressSchema, + token1Address: evmAddressSchema, + + totalLiquidity: z.number().nonnegative(), + WETH9: evmAddressSchema, + pools: z.record(z.enum(AVAILABLE_POOL_FEE), basicPoolInfo.nullable()), + }), + info: infoSchema, +}); + +export default getPoolResponseSchema; diff --git a/src/services/Integrator/schemas/index.ts b/src/services/Integrator/schemas/index.ts new file mode 100644 index 0000000..1d09d6e --- /dev/null +++ b/src/services/Integrator/schemas/index.ts @@ -0,0 +1,4 @@ +export { default as environmentResponseSchema } from './environment-response-schema.js'; +export { default as listNFTOrderResponseSchema } from './list-nft-order-response-schema.js'; +export { default as getPoolResponseSchema } from './get-pool-response-schema.js'; +export { default as listPoolResponseSchema } from './list-pool-response-schema.js'; diff --git a/src/services/Integrator/schemas/info-schema.ts b/src/services/Integrator/schemas/info-schema.ts new file mode 100644 index 0000000..949727e --- /dev/null +++ b/src/services/Integrator/schemas/info-schema.ts @@ -0,0 +1,12 @@ +import { z } from 'zod'; +import { hexStringSchema } from './util-schemas.js'; + +const infoSchema = z.object({ + blockNumber: z.number().int().nonnegative(), + blockHash: hexStringSchema, + timeRequest: z.number().int().nonnegative(), + timeAnswer: z.number().int().nonnegative(), + changes: z.number().int().nonnegative(), +}); + +export default infoSchema; diff --git a/src/services/Integrator/schemas/list-nft-order-response-schema.ts b/src/services/Integrator/schemas/list-nft-order-response-schema.ts new file mode 100644 index 0000000..4747ffd --- /dev/null +++ b/src/services/Integrator/schemas/list-nft-order-response-schema.ts @@ -0,0 +1,10 @@ +import { z } from 'zod'; +import poolSchema from './pool-schema.js'; +import infoSchema from './info-schema.js'; + +const listNFTOrderResponseSchema = z.object({ + result: z.array(poolSchema), + info: infoSchema, +}); + +export default listNFTOrderResponseSchema; diff --git a/src/services/Integrator/schemas/list-pool-response-schema.ts b/src/services/Integrator/schemas/list-pool-response-schema.ts new file mode 100644 index 0000000..2e19738 --- /dev/null +++ b/src/services/Integrator/schemas/list-pool-response-schema.ts @@ -0,0 +1,26 @@ +import { z } from 'zod'; +import { evmAddressSchema } from './util-schemas.js'; +import basicPoolInfo from './basic-pool-info-schema.js'; +import infoSchema from './info-schema.js'; + +const poolOfListPoolSchema = z.object({ + token0: z.string().nonempty(), + token1: z.string().nonempty(), + token0Address: evmAddressSchema, + token1Address: evmAddressSchema, + + token0Decimals: z.number().int().nonnegative().max(18), + token1Decimals: z.number().int().nonnegative().max(18), + WETH9: evmAddressSchema, + + ...basicPoolInfo.shape, + + type: z.string().nonempty(), +}); + +const listPoolResponseSchema = z.object({ + result: z.array(poolOfListPoolSchema), + info: infoSchema, +}); + +export default listPoolResponseSchema; diff --git a/src/services/Integrator/schemas/pool-schema.ts b/src/services/Integrator/schemas/pool-schema.ts new file mode 100644 index 0000000..3053734 --- /dev/null +++ b/src/services/Integrator/schemas/pool-schema.ts @@ -0,0 +1,33 @@ +import { z } from 'zod'; +import { evmAddressSchema } from './util-schemas.js'; + +const poolSchema = z.object({ + tokenId: evmAddressSchema, + + token0: z.string().nonempty(), + token1: z.string().nonempty(), + token0Address: evmAddressSchema, + token1Address: evmAddressSchema, + token0Decimals: z.number().int().nonnegative().max(18), + token1Decimals: z.number().int().nonnegative().max(18), + + amount: z.number().nonnegative(), + amount0: z.number().nonnegative(), + amount1: z.number().nonnegative(), + from: z.number().nonnegative(), + to: z.number().nonnegative(), + fee: z.number().nonnegative(), + collectFee: z.number().nonnegative(), + reward: z.number().nonnegative(), + apr: z.number().nonnegative(), + boost: z.number().int().nonnegative(), + isStaked: z.boolean(), + poolFee: z.number().nonnegative(), + poolAddress: evmAddressSchema, + veOrnForMaxBoost: z.number().nonnegative(), + veOrnMaxBoost: z.number().nonnegative(), + veORNCurrent: z.number().nonnegative(), + time: z.number().int().nonnegative(), // tim +}); + +export default poolSchema; diff --git a/src/services/Integrator/schemas/util-schemas.ts b/src/services/Integrator/schemas/util-schemas.ts new file mode 100644 index 0000000..0d58a75 --- /dev/null +++ b/src/services/Integrator/schemas/util-schemas.ts @@ -0,0 +1,14 @@ +import { ethers } from 'ethers'; +import { z } from 'zod'; + +export const evmAddressSchema = z + .string() + .refine(ethers.utils.isAddress, (v) => ({ + message: `${v} is not a valid address`, + })); + +export const hexStringSchema = z + .string() + .refine(ethers.utils.isAddress, (v) => ({ + message: `${v} is not a valid hex string`, + })); diff --git a/src/types.ts b/src/types.ts index 64449e8..88d32ac 100644 --- a/src/types.ts +++ b/src/types.ts @@ -252,6 +252,12 @@ export type VerboseUnitConfig = { // http://10.23.5.11:3003/, // https://price-feed:3003/ } + integrator: { + api: string + // For example: + // http://localhost:3004/, + // http:// + } } basicAuth?: BasicAuthCredentials } From 716762ce118bdccbb4313a161eaf78add5b038b0 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Wed, 27 Sep 2023 15:46:07 +0300 Subject: [PATCH 02/24] create rc --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 23406c1..8f4d0e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.88", + "version": "0.19.89-rc0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.88", + "version": "0.19.89-rc0", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index da99f7a..27749e9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.88", + "version": "0.19.89-rc0", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From d6b1c625b3dc6e8108e01915f054877ed2062052 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Wed, 27 Sep 2023 16:20:35 +0300 Subject: [PATCH 03/24] add veORN method --- package-lock.json | 4 +-- package.json | 2 +- src/services/Integrator/index.ts | 28 ++++++++++++++++--- src/services/Integrator/schemas/index.ts | 1 + .../Integrator/schemas/veORN-info-schema.ts | 26 +++++++++++++++++ 5 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 src/services/Integrator/schemas/veORN-info-schema.ts diff --git a/package-lock.json b/package-lock.json index 8f4d0e7..f08d407 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc0", + "version": "0.19.89-rc1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc0", + "version": "0.19.89-rc1", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 27749e9..b6df1a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc0", + "version": "0.19.89-rc1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Integrator/index.ts b/src/services/Integrator/index.ts index ebb36ce..76efab4 100644 --- a/src/services/Integrator/index.ts +++ b/src/services/Integrator/index.ts @@ -3,6 +3,7 @@ import { getPoolResponseSchema, listNFTOrderResponseSchema, listPoolResponseSchema, + veORNInfoSchema, } from './schemas/index.js'; import { fetchWithValidation } from 'simple-typed-fetch'; @@ -35,11 +36,18 @@ type ListPoolPayload = BasePayload & { params: [string] }; +type VeORNInfoPayload = BasePayload & { + model: 'veORN' + method: 'info' + params: [string] +} + type Payload = - | GetEnvironmentPayload - | ListNFTOrderPayload - | GetPoolInfoPayload - | ListPoolPayload; + | GetEnvironmentPayload + | ListNFTOrderPayload + | GetPoolInfoPayload + | ListPoolPayload + | VeORNInfoPayload; class IntegratorService { private readonly apiUrl: string; @@ -58,6 +66,7 @@ class IntegratorService { this.listNFTOrder = this.listNFTOrder.bind(this); this.getPoolInfo = this.getPoolInfo.bind(this); this.listPool = this.listPool.bind(this); + this.veORNInfo = this.veORNInfo.bind(this); } makeRPCPayload = (payload: Omit) => { @@ -115,6 +124,17 @@ class IntegratorService { }), }); } + + private readonly veORNInfo = (address: string) => { + return fetchWithValidation(this.apiUrl, veORNInfoSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: 'veORN', + method: 'info', + params: [address] + }) + }) + } } export * as schemas from './schemas/index.js'; diff --git a/src/services/Integrator/schemas/index.ts b/src/services/Integrator/schemas/index.ts index 1d09d6e..a8cca95 100644 --- a/src/services/Integrator/schemas/index.ts +++ b/src/services/Integrator/schemas/index.ts @@ -2,3 +2,4 @@ export { default as environmentResponseSchema } from './environment-response-sch export { default as listNFTOrderResponseSchema } from './list-nft-order-response-schema.js'; export { default as getPoolResponseSchema } from './get-pool-response-schema.js'; export { default as listPoolResponseSchema } from './list-pool-response-schema.js'; +export { default as veORNInfoSchema } from './veORN-info-schema.js'; diff --git a/src/services/Integrator/schemas/veORN-info-schema.ts b/src/services/Integrator/schemas/veORN-info-schema.ts new file mode 100644 index 0000000..67f0602 --- /dev/null +++ b/src/services/Integrator/schemas/veORN-info-schema.ts @@ -0,0 +1,26 @@ +import { z } from 'zod'; +import { evmAddressSchema } from './util-schemas.js'; +import infoSchema from './info-schema.js'; + +const veORNResultSchema = z.object({ + avgAPR: z.number(), + minAPR: z.number(), + maxAPR: z.number(), + veTOKENAddress: evmAddressSchema, + totalORNLocked: z.number(), + totalVeORN: z.number(), + weekly_reward: z.number(), + userAPR: z.number(), + userVeORN: z.number(), + userORNLocked: z.number(), + userPeriodLock: z.number(), + userReward: z.number(), + userWeeklyReward: z.number() +}); + +const veORNInfoSchema = z.object({ + result: veORNResultSchema, + info: infoSchema, +}); + +export default veORNInfoSchema; From b6e6a57d2cb97112b5814432667e2fabcc597270 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Wed, 27 Sep 2023 16:46:57 +0300 Subject: [PATCH 04/24] make veORN method public --- package.json | 2 +- src/services/Integrator/index.ts | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index b6df1a3..04fe10b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc1", + "version": "0.19.89-rc2", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Integrator/index.ts b/src/services/Integrator/index.ts index 76efab4..e5a1aa0 100644 --- a/src/services/Integrator/index.ts +++ b/src/services/Integrator/index.ts @@ -77,6 +77,17 @@ class IntegratorService { }); }; + veORNInfo = (address: string) => { + return fetchWithValidation(this.apiUrl, veORNInfoSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: 'veORN', + method: 'info', + params: [address] + }) + }) + } + private readonly getEnvironment = () => { return fetchWithValidation(this.apiUrl, environmentResponseSchema, { method: 'POST', @@ -124,17 +135,6 @@ class IntegratorService { }), }); } - - private readonly veORNInfo = (address: string) => { - return fetchWithValidation(this.apiUrl, veORNInfoSchema, { - method: 'POST', - body: this.makeRPCPayload({ - model: 'veORN', - method: 'info', - params: [address] - }) - }) - } } export * as schemas from './schemas/index.js'; From 8453f92a7f8af560520df2cc00300fc3a2719448 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Wed, 27 Sep 2023 17:28:10 +0300 Subject: [PATCH 05/24] update config --- package-lock.json | 4 +-- package.json | 2 +- src/config/envs.json | 69 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f08d407..0cffd32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc1", + "version": "0.19.89-rc3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc1", + "version": "0.19.89-rc3", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 04fe10b..a89b8e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc2", + "version": "0.19.89-rc3", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/config/envs.json b/src/config/envs.json index fd2bb30..bad0b9d 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -15,6 +15,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } }, "liquidityMigratorAddress": "0x23a1820a47BcD022E29f6058a5FD224242F50D1A" @@ -31,6 +34,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -46,6 +52,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -61,6 +70,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -76,6 +88,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } } @@ -97,6 +112,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } }, "liquidityMigratorAddress": "0x01b10dds12478C88A5E18e2707E729906bC25CfF6" @@ -113,6 +131,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -128,6 +149,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -143,6 +167,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -158,6 +185,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -173,6 +203,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } } @@ -194,6 +227,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -209,6 +245,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -224,6 +263,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -239,6 +281,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -254,6 +299,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } } @@ -275,6 +323,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -290,6 +341,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } } @@ -311,6 +365,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } }, "liquidityMigratorAddress": "0x23a1820a47BcD022E29f6058a5FD224242F50D1A" @@ -327,6 +384,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -342,6 +402,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -357,6 +420,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } }, @@ -372,6 +438,9 @@ }, "priceFeed": { "all": "/price-feed" + }, + "integrator": { + "http": "http://65.109.97.170:33000" } } } From 1227562402d9052d37126238c7c5595f96082112 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Wed, 27 Sep 2023 17:55:01 +0300 Subject: [PATCH 06/24] fix hex validation --- package-lock.json | 4 +- package.json | 2 +- src/config/envs.json | 46 +++++++++---------- .../Integrator/schemas/util-schemas.ts | 2 +- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0cffd32..6df12c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc3", + "version": "0.19.89-rc4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc3", + "version": "0.19.89-rc4", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index a89b8e5..8addc9d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc3", + "version": "0.19.89-rc4", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/config/envs.json b/src/config/envs.json index bad0b9d..00e4268 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -17,7 +17,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } }, "liquidityMigratorAddress": "0x23a1820a47BcD022E29f6058a5FD224242F50D1A" @@ -36,7 +36,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -54,7 +54,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -72,7 +72,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -90,7 +90,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } } @@ -114,7 +114,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } }, "liquidityMigratorAddress": "0x01b10dds12478C88A5E18e2707E729906bC25CfF6" @@ -133,7 +133,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -151,7 +151,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -169,7 +169,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -187,7 +187,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -205,7 +205,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } } @@ -229,7 +229,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -247,7 +247,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -265,7 +265,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -283,7 +283,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -301,7 +301,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } } @@ -325,7 +325,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -343,7 +343,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } } @@ -367,7 +367,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } }, "liquidityMigratorAddress": "0x23a1820a47BcD022E29f6058a5FD224242F50D1A" @@ -386,7 +386,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -404,7 +404,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -422,7 +422,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } }, @@ -440,7 +440,7 @@ "all": "/price-feed" }, "integrator": { - "http": "http://65.109.97.170:33000" + "http": "/orion-integrator/" } } } diff --git a/src/services/Integrator/schemas/util-schemas.ts b/src/services/Integrator/schemas/util-schemas.ts index 0d58a75..f0e80b2 100644 --- a/src/services/Integrator/schemas/util-schemas.ts +++ b/src/services/Integrator/schemas/util-schemas.ts @@ -9,6 +9,6 @@ export const evmAddressSchema = z export const hexStringSchema = z .string() - .refine(ethers.utils.isAddress, (v) => ({ + .refine(ethers.utils.isHexString, (v) => ({ message: `${v} is not a valid hex string`, })); From 0b212bbbd9d566e1c5c38e5036963bed226e6030 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Wed, 27 Sep 2023 18:13:37 +0300 Subject: [PATCH 07/24] bump version --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6df12c7..c51fd01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc4", + "version": "0.19.89-rc5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc4", + "version": "0.19.89-rc5", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 8addc9d..6573e2f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc4", + "version": "0.19.89-rc5", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From bcf0a3c4d0b04d27c047bc17f255b699e71344f1 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Thu, 28 Sep 2023 10:45:04 +0300 Subject: [PATCH 08/24] fix publishing --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c51fd01..97b6cdc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc5", + "version": "0.19.89-rc6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc5", + "version": "0.19.89-rc6", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 6573e2f..fee5419 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc5", + "version": "0.19.89-rc6", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 9b178c87ad4ce5a1bbcd168312bcfb081dd60737 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Thu, 28 Sep 2023 12:55:37 +0300 Subject: [PATCH 09/24] update model --- package-lock.json | 4 ++-- package.json | 2 +- src/services/Integrator/schemas/veORN-info-schema.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 97b6cdc..d5c6f7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc6", + "version": "0.19.89-rc7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc6", + "version": "0.19.89-rc7", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index fee5419..4e46f46 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc6", + "version": "0.19.89-rc7", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Integrator/schemas/veORN-info-schema.ts b/src/services/Integrator/schemas/veORN-info-schema.ts index 67f0602..46933b1 100644 --- a/src/services/Integrator/schemas/veORN-info-schema.ts +++ b/src/services/Integrator/schemas/veORN-info-schema.ts @@ -6,10 +6,10 @@ const veORNResultSchema = z.object({ avgAPR: z.number(), minAPR: z.number(), maxAPR: z.number(), - veTOKENAddress: evmAddressSchema, + veTokenAddress: evmAddressSchema, totalORNLocked: z.number(), totalVeORN: z.number(), - weekly_reward: z.number(), + weeklyReward: z.number(), userAPR: z.number(), userVeORN: z.number(), userORNLocked: z.number(), From e868711374843e02595e45b50812ec15e041d7ea Mon Sep 17 00:00:00 2001 From: TheJuze Date: Thu, 28 Sep 2023 13:23:19 +0300 Subject: [PATCH 10/24] update model veORNInfo --- package-lock.json | 4 ++-- package.json | 2 +- src/services/Integrator/schemas/veORN-info-schema.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index d5c6f7d..32e2175 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc7", + "version": "0.19.89-rc8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc7", + "version": "0.19.89-rc8", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 4e46f46..d0e0fa5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc7", + "version": "0.19.89-rc8", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Integrator/schemas/veORN-info-schema.ts b/src/services/Integrator/schemas/veORN-info-schema.ts index 46933b1..1e05026 100644 --- a/src/services/Integrator/schemas/veORN-info-schema.ts +++ b/src/services/Integrator/schemas/veORN-info-schema.ts @@ -13,7 +13,7 @@ const veORNResultSchema = z.object({ userAPR: z.number(), userVeORN: z.number(), userORNLocked: z.number(), - userPeriodLock: z.number(), + userLockEndDate: z.number(), userReward: z.number(), userWeeklyReward: z.number() }); From 1441b51e0d4ea776e8f968223eac33f42cb2c6ad Mon Sep 17 00:00:00 2001 From: TheJuze Date: Thu, 28 Sep 2023 17:36:08 +0300 Subject: [PATCH 11/24] add more methods to integrator --- package-lock.json | 4 +- package.json | 2 +- src/services/Integrator/index.ts | 78 ++++++++++++++++++- src/services/Integrator/schemas/index.ts | 4 +- .../Integrator/schemas/list-amount-schema.ts | 5 ++ .../Integrator/schemas/voting-info-schema.ts | 21 +++++ 6 files changed, 107 insertions(+), 7 deletions(-) create mode 100644 src/services/Integrator/schemas/list-amount-schema.ts create mode 100644 src/services/Integrator/schemas/voting-info-schema.ts diff --git a/package-lock.json b/package-lock.json index 32e2175..971de74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc8", + "version": "0.19.89-rc9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc8", + "version": "0.19.89-rc9", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index d0e0fa5..4c48fb6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc8", + "version": "0.19.89-rc9", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Integrator/index.ts b/src/services/Integrator/index.ts index e5a1aa0..250a271 100644 --- a/src/services/Integrator/index.ts +++ b/src/services/Integrator/index.ts @@ -1,11 +1,14 @@ import { environmentResponseSchema, getPoolResponseSchema, + listAmountResponseSchema, listNFTOrderResponseSchema, listPoolResponseSchema, - veORNInfoSchema, + veORNInfoResponseSchema, + votingInfoResponseSchema } from './schemas/index.js'; import { fetchWithValidation } from 'simple-typed-fetch'; +import { BigNumber } from 'bignumber.js'; type BasePayload = { chainId: number @@ -42,12 +45,29 @@ type VeORNInfoPayload = BasePayload & { params: [string] } +type ListAmountPayload = BasePayload & { + model: string + method: 'listAmount' + params: [] +} + +type GetAmountByORNPayload = BasePayload & { + amountToken: number + timeLock: number +} + type Payload = | GetEnvironmentPayload | ListNFTOrderPayload | GetPoolInfoPayload | ListPoolPayload - | VeORNInfoPayload; + | VeORNInfoPayload + | ListAmountPayload + | GetAmountByORNPayload; + +const START_TIME = 1690848000;// Aug 01 2023 00:00:00 UTC +const DAY = 86400 +const YEAR = 365 * DAY class IntegratorService { private readonly apiUrl: string; @@ -67,6 +87,10 @@ class IntegratorService { this.getPoolInfo = this.getPoolInfo.bind(this); this.listPool = this.listPool.bind(this); this.veORNInfo = this.veORNInfo.bind(this); + this.listAmount = this.listAmount.bind(this); + this.getAmountByORN = this.getAmountByORN.bind(this); + this.getAmountAtCurrent = this.getAmountAtCurrent.bind(this); + this.getVotingInfo = this.getVotingInfo.bind(this); } makeRPCPayload = (payload: Omit) => { @@ -78,7 +102,7 @@ class IntegratorService { }; veORNInfo = (address: string) => { - return fetchWithValidation(this.apiUrl, veORNInfoSchema, { + return fetchWithValidation(this.apiUrl, veORNInfoResponseSchema, { method: 'POST', body: this.makeRPCPayload({ model: 'veORN', @@ -88,6 +112,13 @@ class IntegratorService { }) } + getAmountAtCurrent = (amount: number) => { + const timestamp = Date.now() / 1000; + + // sqrt + return BigNumber(amount).dividedBy(this.getK(timestamp)); + } + private readonly getEnvironment = () => { return fetchWithValidation(this.apiUrl, environmentResponseSchema, { method: 'POST', @@ -135,6 +166,47 @@ class IntegratorService { }), }); } + + private readonly listAmount = (poolKey: string) => { + return fetchWithValidation(this.apiUrl, listAmountResponseSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: poolKey, + method: 'listAmount', + params: [], + }), + }); + } + + private readonly getK = (time: number) => { + const currentTime = time < START_TIME ? START_TIME : time; + + const deltaYears = BigNumber(currentTime).minus(START_TIME).dividedBy(YEAR); + return BigNumber(2).pow(BigNumber(deltaYears).pow(2)); + } + + private readonly getAmountByORN = (amountToken: number, timeLock: number) => { + const timestamp = Date.now() / 1000; + + const deltaDays = BigNumber(timeLock).minus(timestamp).dividedBy(DAY); + if (deltaDays.lt(0)) { + return 0; + } + + // sqrt + return BigNumber(amountToken).multipliedBy(BigNumber(deltaDays).sqrt()).dividedBy(5); + } + + private readonly getVotingInfo = (userAddress: number) => { + return fetchWithValidation(this.apiUrl, votingInfoResponseSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: 'OrionVoting', + method: 'info', + params: [userAddress], + }), + }); + } } export * as schemas from './schemas/index.js'; diff --git a/src/services/Integrator/schemas/index.ts b/src/services/Integrator/schemas/index.ts index a8cca95..ebd913d 100644 --- a/src/services/Integrator/schemas/index.ts +++ b/src/services/Integrator/schemas/index.ts @@ -2,4 +2,6 @@ export { default as environmentResponseSchema } from './environment-response-sch export { default as listNFTOrderResponseSchema } from './list-nft-order-response-schema.js'; export { default as getPoolResponseSchema } from './get-pool-response-schema.js'; export { default as listPoolResponseSchema } from './list-pool-response-schema.js'; -export { default as veORNInfoSchema } from './veORN-info-schema.js'; +export { default as veORNInfoResponseSchema } from './veORN-info-schema.js'; +export { default as listAmountResponseSchema } from './list-amount-schema.js'; +export { default as votingInfoResponseSchema } from './voting-info-schema.js'; diff --git a/src/services/Integrator/schemas/list-amount-schema.ts b/src/services/Integrator/schemas/list-amount-schema.ts new file mode 100644 index 0000000..c4bf3b1 --- /dev/null +++ b/src/services/Integrator/schemas/list-amount-schema.ts @@ -0,0 +1,5 @@ +import { z } from 'zod'; + +const listAmountSchema = z.record(z.number(), z.number()) + +export default listAmountSchema; diff --git a/src/services/Integrator/schemas/voting-info-schema.ts b/src/services/Integrator/schemas/voting-info-schema.ts new file mode 100644 index 0000000..74c05dc --- /dev/null +++ b/src/services/Integrator/schemas/voting-info-schema.ts @@ -0,0 +1,21 @@ +import { z } from 'zod'; + +const poolSchema = z.object({ + allVote: z.number(), + name: z.string(), + poolAddress: z.string(), + type: z.string(), + userVote: z.number() +}) + +const votingInfoSchema = z.object({ + absoluteVeTokenInVoting: z.number(), + pools: z.array(poolSchema), + userVeTokenBalance: z.number(), + userVeTokenInVoting: z.number(), + veTokenAddress: z.string(), + votingAddress: z.string(), + weeklyReward: z.number() +}) + +export default votingInfoSchema; From 020b153597534748e915e3d313388e39ef561792 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Fri, 29 Sep 2023 10:56:55 +0300 Subject: [PATCH 12/24] move constants --- package-lock.json | 4 ++-- package.json | 2 +- src/constants/index.ts | 1 + src/constants/timings.ts | 3 +++ src/services/Integrator/index.ts | 9 +++------ 5 files changed, 10 insertions(+), 9 deletions(-) create mode 100644 src/constants/timings.ts diff --git a/package-lock.json b/package-lock.json index e241e30..b16089f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc9", + "version": "0.19.89-rc11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc9", + "version": "0.19.89-rc11", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 54faf66..dc30e31 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc10", + "version": "0.19.89-rc11", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/constants/index.ts b/src/constants/index.ts index c414279..efe47f0 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -9,5 +9,6 @@ export { default as exchangesMap } from './exchangesMap.js'; export * from './chains.js'; export * from './precisions.js'; export * from './gasLimits.js'; +export * from './timings.js'; export const SERVICE_TOKEN = 'ORN'; diff --git a/src/constants/timings.ts b/src/constants/timings.ts new file mode 100644 index 0000000..e92fc85 --- /dev/null +++ b/src/constants/timings.ts @@ -0,0 +1,3 @@ +export const LOCK_START_TIME = 1690848000;// Aug 01 2023 00:00:00 UTC +export const DAY = 86400 +export const YEAR = 365 * DAY diff --git a/src/services/Integrator/index.ts b/src/services/Integrator/index.ts index 250a271..8f06bfd 100644 --- a/src/services/Integrator/index.ts +++ b/src/services/Integrator/index.ts @@ -9,6 +9,7 @@ import { } from './schemas/index.js'; import { fetchWithValidation } from 'simple-typed-fetch'; import { BigNumber } from 'bignumber.js'; +import { DAY, LOCK_START_TIME, YEAR } from '../../constants/index.js'; type BasePayload = { chainId: number @@ -65,10 +66,6 @@ type Payload = | ListAmountPayload | GetAmountByORNPayload; -const START_TIME = 1690848000;// Aug 01 2023 00:00:00 UTC -const DAY = 86400 -const YEAR = 365 * DAY - class IntegratorService { private readonly apiUrl: string; @@ -179,9 +176,9 @@ class IntegratorService { } private readonly getK = (time: number) => { - const currentTime = time < START_TIME ? START_TIME : time; + const currentTime = time < LOCK_START_TIME ? LOCK_START_TIME : time; - const deltaYears = BigNumber(currentTime).minus(START_TIME).dividedBy(YEAR); + const deltaYears = BigNumber(currentTime).minus(LOCK_START_TIME).dividedBy(YEAR); return BigNumber(2).pow(BigNumber(deltaYears).pow(2)); } From bed0aac578d07ec181ec8e5aa6163f5cfc0a307f Mon Sep 17 00:00:00 2001 From: TheJuze Date: Fri, 29 Sep 2023 17:01:22 +0300 Subject: [PATCH 13/24] make PlatformFees fields optional. temporary solution --- package-lock.json | 4 ++-- package.json | 2 +- src/constants/index.ts | 1 + src/services/BlockchainService/index.ts | 13 +++++++++---- src/services/Integrator/index.ts | 6 +++--- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index b16089f..74382d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc11", + "version": "0.19.89-rc12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc11", + "version": "0.19.89-rc12", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index dc30e31..ab14ecd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc11", + "version": "0.19.89-rc12", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/constants/index.ts b/src/constants/index.ts index efe47f0..1651be1 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -12,3 +12,4 @@ export * from './gasLimits.js'; export * from './timings.js'; export const SERVICE_TOKEN = 'ORN'; +export const INITIAL_VEORN_ADJUSTMENT_FACTOR = 5; diff --git a/src/services/BlockchainService/index.ts b/src/services/BlockchainService/index.ts index 6c43a0a..e301615 100644 --- a/src/services/BlockchainService/index.ts +++ b/src/services/BlockchainService/index.ts @@ -61,8 +61,8 @@ type AtomicSwapHistoryTargetQuery = AtomicSwapHistoryBaseQuery & { } type PlatformFees = { - assetIn: string - assetOut: string + assetIn?: string // TODO: return types from main branch + assetOut?: string walletAddress?: string | undefined fromWidget?: string | undefined } @@ -247,8 +247,13 @@ class BlockchainService { ) => { const url = new URL(`${this.apiUrl}/api/platform-fees`); - url.searchParams.append('assetIn', assetIn); - url.searchParams.append('assetOut', assetOut); + if (assetIn !== undefined) { // TODO: make same as in main branch + url.searchParams.append('assetIn', assetIn); + } + + if (assetOut !== undefined) { + url.searchParams.append('assetOut', assetOut); + } if (walletAddress !== undefined) { url.searchParams.append('walletAddress', walletAddress); diff --git a/src/services/Integrator/index.ts b/src/services/Integrator/index.ts index 8f06bfd..4b050ed 100644 --- a/src/services/Integrator/index.ts +++ b/src/services/Integrator/index.ts @@ -9,7 +9,7 @@ import { } from './schemas/index.js'; import { fetchWithValidation } from 'simple-typed-fetch'; import { BigNumber } from 'bignumber.js'; -import { DAY, LOCK_START_TIME, YEAR } from '../../constants/index.js'; +import { DAY, INITIAL_VEORN_ADJUSTMENT_FACTOR, LOCK_START_TIME, YEAR } from '../../constants/index.js'; type BasePayload = { chainId: number @@ -109,7 +109,7 @@ class IntegratorService { }) } - getAmountAtCurrent = (amount: number) => { + getAmountAtCurrent = async (amount: number) => { const timestamp = Date.now() / 1000; // sqrt @@ -191,7 +191,7 @@ class IntegratorService { } // sqrt - return BigNumber(amountToken).multipliedBy(BigNumber(deltaDays).sqrt()).dividedBy(5); + return BigNumber(amountToken).multipliedBy(BigNumber(deltaDays).sqrt()).dividedBy(INITIAL_VEORN_ADJUSTMENT_FACTOR); } private readonly getVotingInfo = (userAddress: number) => { From ffa4d8b9d64613dc8673372d855485cc5c34f4f4 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Fri, 29 Sep 2023 17:16:55 +0300 Subject: [PATCH 14/24] fix getAmountAtCurrent return type --- package-lock.json | 4 ++-- package.json | 2 +- src/constants/index.ts | 1 - src/constants/timings.ts | 1 - src/services/Integrator/constants.ts | 2 ++ src/services/Integrator/index.ts | 5 +++-- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 74382d0..542573d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc12", + "version": "0.19.89-rc13", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc12", + "version": "0.19.89-rc13", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index ab14ecd..c84fa96 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc12", + "version": "0.19.89-rc13", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/constants/index.ts b/src/constants/index.ts index 1651be1..efe47f0 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -12,4 +12,3 @@ export * from './gasLimits.js'; export * from './timings.js'; export const SERVICE_TOKEN = 'ORN'; -export const INITIAL_VEORN_ADJUSTMENT_FACTOR = 5; diff --git a/src/constants/timings.ts b/src/constants/timings.ts index e92fc85..a5ee04b 100644 --- a/src/constants/timings.ts +++ b/src/constants/timings.ts @@ -1,3 +1,2 @@ -export const LOCK_START_TIME = 1690848000;// Aug 01 2023 00:00:00 UTC export const DAY = 86400 export const YEAR = 365 * DAY diff --git a/src/services/Integrator/constants.ts b/src/services/Integrator/constants.ts index 00c0d3d..8ec49a1 100644 --- a/src/services/Integrator/constants.ts +++ b/src/services/Integrator/constants.ts @@ -1 +1,3 @@ export const AVAILABLE_POOL_FEE = ['0.01', '0.05', '0.3', '1'] as const; +export const INITIAL_VEORN_ADJUSTMENT_FACTOR = 5; +export const LOCK_START_TIME = 1690848000;// Aug 01 2023 00:00:00 UTC diff --git a/src/services/Integrator/index.ts b/src/services/Integrator/index.ts index 4b050ed..01e27e5 100644 --- a/src/services/Integrator/index.ts +++ b/src/services/Integrator/index.ts @@ -9,7 +9,8 @@ import { } from './schemas/index.js'; import { fetchWithValidation } from 'simple-typed-fetch'; import { BigNumber } from 'bignumber.js'; -import { DAY, INITIAL_VEORN_ADJUSTMENT_FACTOR, LOCK_START_TIME, YEAR } from '../../constants/index.js'; +import { DAY, YEAR } from '../../constants/index.js'; +import { INITIAL_VEORN_ADJUSTMENT_FACTOR, LOCK_START_TIME } from './constants.js'; type BasePayload = { chainId: number @@ -109,7 +110,7 @@ class IntegratorService { }) } - getAmountAtCurrent = async (amount: number) => { + getAmountAtCurrent = (amount: number) => { const timestamp = Date.now() / 1000; // sqrt From d0eb2288c040b8fd9fca0903ab03d6976b88e406 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Sun, 1 Oct 2023 17:42:36 +0300 Subject: [PATCH 15/24] update formulas --- package-lock.json | 4 ++-- package.json | 2 +- src/constants/timings.ts | 1 + src/services/Integrator/index.ts | 12 ++++++------ 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 542573d..2fa1e5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc13", + "version": "0.19.89-rc14", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc13", + "version": "0.19.89-rc14", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index c84fa96..5d5157e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc13", + "version": "0.19.89-rc14", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/constants/timings.ts b/src/constants/timings.ts index a5ee04b..471091e 100644 --- a/src/constants/timings.ts +++ b/src/constants/timings.ts @@ -1,2 +1,3 @@ export const DAY = 86400 +export const WEEK_DAYS = 7; export const YEAR = 365 * DAY diff --git a/src/services/Integrator/index.ts b/src/services/Integrator/index.ts index 01e27e5..2c00111 100644 --- a/src/services/Integrator/index.ts +++ b/src/services/Integrator/index.ts @@ -9,8 +9,8 @@ import { } from './schemas/index.js'; import { fetchWithValidation } from 'simple-typed-fetch'; import { BigNumber } from 'bignumber.js'; -import { DAY, YEAR } from '../../constants/index.js'; -import { INITIAL_VEORN_ADJUSTMENT_FACTOR, LOCK_START_TIME } from './constants.js'; +import { DAY, WEEK_DAYS, YEAR } from '../../constants/index.js'; +import { LOCK_START_TIME } from './constants.js'; type BasePayload = { chainId: number @@ -110,7 +110,7 @@ class IntegratorService { }) } - getAmountAtCurrent = (amount: number) => { + getAmountAtCurrent = (amount: number): BigNumber => { const timestamp = Date.now() / 1000; // sqrt @@ -176,11 +176,11 @@ class IntegratorService { }); } - private readonly getK = (time: number) => { + private readonly getK = (time: number): BigNumber => { const currentTime = time < LOCK_START_TIME ? LOCK_START_TIME : time; const deltaYears = BigNumber(currentTime).minus(LOCK_START_TIME).dividedBy(YEAR); - return BigNumber(2).pow(BigNumber(deltaYears).pow(2)); + return BigNumber(2).pow(BigNumber(deltaYears).multipliedBy(2)); } private readonly getAmountByORN = (amountToken: number, timeLock: number) => { @@ -192,7 +192,7 @@ class IntegratorService { } // sqrt - return BigNumber(amountToken).multipliedBy(BigNumber(deltaDays).sqrt()).dividedBy(INITIAL_VEORN_ADJUSTMENT_FACTOR); + return BigNumber(amountToken).multipliedBy(BigNumber(deltaDays).sqrt()).dividedBy(BigNumber(WEEK_DAYS).sqrt()); } private readonly getVotingInfo = (userAddress: number) => { From 3b784906cbe20350d5b1a7f9c89397dd52b00e45 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Sun, 1 Oct 2023 17:53:51 +0300 Subject: [PATCH 16/24] change pow method --- package-lock.json | 4 ++-- package.json | 2 +- src/services/Integrator/index.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2fa1e5e..864da52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc14", + "version": "0.19.89-rc15", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc14", + "version": "0.19.89-rc15", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 5d5157e..b4effed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc14", + "version": "0.19.89-rc15", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Integrator/index.ts b/src/services/Integrator/index.ts index 2c00111..8cdd0d6 100644 --- a/src/services/Integrator/index.ts +++ b/src/services/Integrator/index.ts @@ -176,11 +176,11 @@ class IntegratorService { }); } - private readonly getK = (time: number): BigNumber => { + private readonly getK = (time: number) => { const currentTime = time < LOCK_START_TIME ? LOCK_START_TIME : time; const deltaYears = BigNumber(currentTime).minus(LOCK_START_TIME).dividedBy(YEAR); - return BigNumber(2).pow(BigNumber(deltaYears).multipliedBy(2)); + return 2 ** BigNumber(deltaYears).multipliedBy(2).toNumber(); } private readonly getAmountByORN = (amountToken: number, timeLock: number) => { From 0f4940a6f9bed227d128bd4a820be34f82479de4 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Sun, 1 Oct 2023 18:16:42 +0300 Subject: [PATCH 17/24] make field getVotingInfo public --- package-lock.json | 4 ++-- package.json | 2 +- src/services/Integrator/index.ts | 22 +++++++++++----------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 864da52..479d1fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc15", + "version": "0.19.89-rc16", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc15", + "version": "0.19.89-rc16", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index b4effed..61c27f3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc15", + "version": "0.19.89-rc16", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Integrator/index.ts b/src/services/Integrator/index.ts index 8cdd0d6..a405bb9 100644 --- a/src/services/Integrator/index.ts +++ b/src/services/Integrator/index.ts @@ -117,6 +117,17 @@ class IntegratorService { return BigNumber(amount).dividedBy(this.getK(timestamp)); } + getVotingInfo = (userAddress: number) => { + return fetchWithValidation(this.apiUrl, votingInfoResponseSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: 'OrionVoting', + method: 'info', + params: [userAddress], + }), + }); + } + private readonly getEnvironment = () => { return fetchWithValidation(this.apiUrl, environmentResponseSchema, { method: 'POST', @@ -194,17 +205,6 @@ class IntegratorService { // sqrt return BigNumber(amountToken).multipliedBy(BigNumber(deltaDays).sqrt()).dividedBy(BigNumber(WEEK_DAYS).sqrt()); } - - private readonly getVotingInfo = (userAddress: number) => { - return fetchWithValidation(this.apiUrl, votingInfoResponseSchema, { - method: 'POST', - body: this.makeRPCPayload({ - model: 'OrionVoting', - method: 'info', - params: [userAddress], - }), - }); - } } export * as schemas from './schemas/index.js'; From de23a73487148457465ad5504476c1001c85f9fa Mon Sep 17 00:00:00 2001 From: Alex Kraiz Date: Mon, 2 Oct 2023 09:36:50 +0400 Subject: [PATCH 18/24] make readonly and public --- package.json | 2 +- src/services/Integrator/index.ts | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 61c27f3..852117d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc16", + "version": "0.19.89-rc17", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Integrator/index.ts b/src/services/Integrator/index.ts index a405bb9..927f15f 100644 --- a/src/services/Integrator/index.ts +++ b/src/services/Integrator/index.ts @@ -91,7 +91,7 @@ class IntegratorService { this.getVotingInfo = this.getVotingInfo.bind(this); } - makeRPCPayload = (payload: Omit) => { + readonly makeRPCPayload = (payload: Omit) => { return JSON.stringify({ ...payload, chainId: this.chainId, @@ -99,7 +99,7 @@ class IntegratorService { }); }; - veORNInfo = (address: string) => { + readonly veORNInfo = (address: string) => { return fetchWithValidation(this.apiUrl, veORNInfoResponseSchema, { method: 'POST', body: this.makeRPCPayload({ @@ -110,14 +110,14 @@ class IntegratorService { }) } - getAmountAtCurrent = (amount: number): BigNumber => { + readonly getAmountAtCurrent = (amount: number): BigNumber => { const timestamp = Date.now() / 1000; // sqrt return BigNumber(amount).dividedBy(this.getK(timestamp)); } - getVotingInfo = (userAddress: number) => { + readonly getVotingInfo = (userAddress: number) => { return fetchWithValidation(this.apiUrl, votingInfoResponseSchema, { method: 'POST', body: this.makeRPCPayload({ @@ -128,7 +128,7 @@ class IntegratorService { }); } - private readonly getEnvironment = () => { + readonly getEnvironment = () => { return fetchWithValidation(this.apiUrl, environmentResponseSchema, { method: 'POST', body: this.makeRPCPayload({ @@ -139,7 +139,7 @@ class IntegratorService { }); }; - private readonly listNFTOrder = (address: string) => { + readonly listNFTOrder = (address: string) => { return fetchWithValidation(this.apiUrl, listNFTOrderResponseSchema, { method: 'POST', body: this.makeRPCPayload({ @@ -150,7 +150,7 @@ class IntegratorService { }); }; - private readonly getPoolInfo = ( + readonly getPoolInfo = ( token0: string, token1: string, poolAddress: string @@ -165,7 +165,7 @@ class IntegratorService { }); } - private readonly listPool = (address: string) => { + readonly listPool = (address: string) => { return fetchWithValidation(this.apiUrl, listPoolResponseSchema, { method: 'POST', body: this.makeRPCPayload({ @@ -176,7 +176,7 @@ class IntegratorService { }); } - private readonly listAmount = (poolKey: string) => { + readonly listAmount = (poolKey: string) => { return fetchWithValidation(this.apiUrl, listAmountResponseSchema, { method: 'POST', body: this.makeRPCPayload({ From e4009d297b4df6530241dfaecabc029f750d5857 Mon Sep 17 00:00:00 2001 From: Alex Kraiz Date: Mon, 2 Oct 2023 10:26:42 +0400 Subject: [PATCH 19/24] fixed listAmountSchema --- package.json | 2 +- src/services/Integrator/schemas/list-amount-schema.ts | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 852117d..4414d37 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc17", + "version": "0.19.89-rc18", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Integrator/schemas/list-amount-schema.ts b/src/services/Integrator/schemas/list-amount-schema.ts index c4bf3b1..d942a51 100644 --- a/src/services/Integrator/schemas/list-amount-schema.ts +++ b/src/services/Integrator/schemas/list-amount-schema.ts @@ -1,5 +1,9 @@ import { z } from 'zod'; +import infoSchema from './info-schema.js'; -const listAmountSchema = z.record(z.number(), z.number()) +const listAmountSchema = z.object({ + result: z.record(z.number()), + info: infoSchema, +}); export default listAmountSchema; From cf33e8b841f6057406423d361aa56b75b17dd962 Mon Sep 17 00:00:00 2001 From: Alex Kraiz Date: Mon, 2 Oct 2023 10:38:05 +0400 Subject: [PATCH 20/24] added test method --- package.json | 2 +- src/services/Integrator/index.ts | 12 ++++++++++++ src/services/Integrator/schemas/index.ts | 1 + .../Integrator/schemas/test-incrementor-schema.ts | 9 +++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 src/services/Integrator/schemas/test-incrementor-schema.ts diff --git a/package.json b/package.json index 4414d37..c8596ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc18", + "version": "0.19.89-rc19", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Integrator/index.ts b/src/services/Integrator/index.ts index 927f15f..b674610 100644 --- a/src/services/Integrator/index.ts +++ b/src/services/Integrator/index.ts @@ -4,6 +4,7 @@ import { listAmountResponseSchema, listNFTOrderResponseSchema, listPoolResponseSchema, + testIncrementorSchema, veORNInfoResponseSchema, votingInfoResponseSchema } from './schemas/index.js'; @@ -187,6 +188,17 @@ class IntegratorService { }); } + readonly testRetrieve = () => { + return fetchWithValidation(this.apiUrl, testIncrementorSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: 'Incrementer', + method: 'retrieve', + params: [], + }), + }); + } + private readonly getK = (time: number) => { const currentTime = time < LOCK_START_TIME ? LOCK_START_TIME : time; diff --git a/src/services/Integrator/schemas/index.ts b/src/services/Integrator/schemas/index.ts index ebd913d..e6e03b6 100644 --- a/src/services/Integrator/schemas/index.ts +++ b/src/services/Integrator/schemas/index.ts @@ -5,3 +5,4 @@ export { default as listPoolResponseSchema } from './list-pool-response-schema.j export { default as veORNInfoResponseSchema } from './veORN-info-schema.js'; export { default as listAmountResponseSchema } from './list-amount-schema.js'; export { default as votingInfoResponseSchema } from './voting-info-schema.js'; +export { default as testIncrementorSchema } from './test-incrementor-schema.js'; diff --git a/src/services/Integrator/schemas/test-incrementor-schema.ts b/src/services/Integrator/schemas/test-incrementor-schema.ts new file mode 100644 index 0000000..945d461 --- /dev/null +++ b/src/services/Integrator/schemas/test-incrementor-schema.ts @@ -0,0 +1,9 @@ +import { z } from 'zod'; +import infoSchema from './info-schema.js'; + +const testIncrementorSchema = z.object({ + result: z.number().int(), + info: infoSchema, +}); + +export default testIncrementorSchema; From e734e5e7e9339e5e6e493762198ca0ed8c877c94 Mon Sep 17 00:00:00 2001 From: Alex Kraiz Date: Mon, 2 Oct 2023 10:57:52 +0400 Subject: [PATCH 21/24] fix info schema --- package.json | 2 +- src/services/Integrator/schemas/info-schema.ts | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index c8596ad..6957f5f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc19", + "version": "0.19.89-rc20", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Integrator/schemas/info-schema.ts b/src/services/Integrator/schemas/info-schema.ts index 949727e..9e1dc60 100644 --- a/src/services/Integrator/schemas/info-schema.ts +++ b/src/services/Integrator/schemas/info-schema.ts @@ -1,9 +1,11 @@ import { z } from 'zod'; -import { hexStringSchema } from './util-schemas.js'; +import { ethers } from 'ethers'; const infoSchema = z.object({ blockNumber: z.number().int().nonnegative(), - blockHash: hexStringSchema, + blockHash: z.string().refine((v) => v.length === 0 || ethers.utils.isHexString(v), { + message: 'blockHash must be a valid hex string or empty', + }), timeRequest: z.number().int().nonnegative(), timeAnswer: z.number().int().nonnegative(), changes: z.number().int().nonnegative(), From 4bb4798666ba4df8af94429f20e8c5e4e774827b Mon Sep 17 00:00:00 2001 From: TheJuze Date: Mon, 2 Oct 2023 10:36:14 +0300 Subject: [PATCH 22/24] make field address getVotingInfo string --- package-lock.json | 4 ++-- package.json | 2 +- src/services/Integrator/index.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 479d1fc..12e110b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc16", + "version": "0.19.89-rc21", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc16", + "version": "0.19.89-rc21", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 6957f5f..8e6f7bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc20", + "version": "0.19.89-rc21", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Integrator/index.ts b/src/services/Integrator/index.ts index b674610..43be3fb 100644 --- a/src/services/Integrator/index.ts +++ b/src/services/Integrator/index.ts @@ -118,7 +118,7 @@ class IntegratorService { return BigNumber(amount).dividedBy(this.getK(timestamp)); } - readonly getVotingInfo = (userAddress: number) => { + readonly getVotingInfo = (userAddress: string) => { return fetchWithValidation(this.apiUrl, votingInfoResponseSchema, { method: 'POST', body: this.makeRPCPayload({ From 9f39d789e5875205b0b158b7a0553eb23dd5a0a5 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Mon, 2 Oct 2023 10:47:56 +0300 Subject: [PATCH 23/24] update votingInfo schema --- package-lock.json | 4 ++-- package.json | 2 +- src/services/Integrator/schemas/voting-info-schema.ts | 8 +++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 12e110b..784bfc5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc21", + "version": "0.19.89-rc22", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc21", + "version": "0.19.89-rc22", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 8e6f7bf..a3fb0fd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.19.89-rc21", + "version": "0.19.89-rc22", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Integrator/schemas/voting-info-schema.ts b/src/services/Integrator/schemas/voting-info-schema.ts index 74c05dc..bb0718f 100644 --- a/src/services/Integrator/schemas/voting-info-schema.ts +++ b/src/services/Integrator/schemas/voting-info-schema.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import infoSchema from './info-schema.js'; const poolSchema = z.object({ allVote: z.number(), @@ -8,7 +9,7 @@ const poolSchema = z.object({ userVote: z.number() }) -const votingInfoSchema = z.object({ +const votingResultSchema = z.object({ absoluteVeTokenInVoting: z.number(), pools: z.array(poolSchema), userVeTokenBalance: z.number(), @@ -18,4 +19,9 @@ const votingInfoSchema = z.object({ weeklyReward: z.number() }) +const votingInfoSchema = z.object({ + result: votingResultSchema, + info: infoSchema, +}); + export default votingInfoSchema; From 9bcb392680a2dd13e3ac4d07fd1b348601eef4bb Mon Sep 17 00:00:00 2001 From: Dmitry Leleko Date: Wed, 4 Oct 2023 09:09:41 +0200 Subject: [PATCH 24/24] bump version --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6583b8b..5d8e6fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.1", + "version": "0.20.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.1", + "version": "0.20.2", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index aa1ba69..e0c8749 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.1", + "version": "0.20.2", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js",