From d6b1c625b3dc6e8108e01915f054877ed2062052 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Wed, 27 Sep 2023 16:20:35 +0300 Subject: [PATCH] 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;