From b5d0e3f6c6568375834f02204ffd85a837504f7d Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Wed, 19 Jun 2024 10:33:19 +0300 Subject: [PATCH 1/4] indexer update --- package.json | 2 +- src/services/Indexer/index.ts | 40 +++++++++++++++++++ .../Indexer/schemas/get-points-at-schema.ts | 15 +++++++ .../Indexer/schemas/get-points-info-schema.ts | 27 +++++++++++++ src/services/Indexer/schemas/index.ts | 2 + 5 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 src/services/Indexer/schemas/get-points-at-schema.ts create mode 100644 src/services/Indexer/schemas/get-points-info-schema.ts diff --git a/package.json b/package.json index 7e330bb..edd013e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.9", + "version": "0.22.10-rc1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Indexer/index.ts b/src/services/Indexer/index.ts index 2791f8a..d1fce85 100644 --- a/src/services/Indexer/index.ts +++ b/src/services/Indexer/index.ts @@ -1,5 +1,7 @@ import { environmentResponseSchema, + getPointsAtResponseSchema, + getPointsInfoResponseSchema, getPoolResponseSchema, listAmountResponseSchema, listNFTOrderResponseSchema, @@ -51,6 +53,18 @@ type VeORNInfoPayload = BasePayload & { params: [string] }; +type GetPointsInfoPayload = BasePayload & { + model: 'veORN' + method: 'pointsInfo' + params: [string] +}; + +type GetPointsAtPayload = BasePayload & { + model: 'veORN' + method: 'pointsInfo' + params: [number, number, number] +}; + type ListAmountPayload = BasePayload & { model: string method: 'listAmount' @@ -68,6 +82,8 @@ type Payload = | GetPoolInfoPayload | ListPoolPayload | VeORNInfoPayload + | GetPointsInfoPayload + | GetPointsAtPayload | ListAmountPayload | GetAmountByORNPayload; @@ -92,6 +108,8 @@ class IndexerService { this.poolV2Info = this.poolV2Info.bind(this); this.listPoolV3 = this.listPoolV3.bind(this); this.veORNInfo = this.veORNInfo.bind(this); + this.getPointsInfo = this.getPointsInfo.bind(this); + this.getPointsAt = this.getPointsAt.bind(this); this.listAmount = this.listAmount.bind(this); this.getAmountByORN = this.getAmountByORN.bind(this); this.getAmountAt = this.getAmountAt.bind(this); @@ -118,6 +136,28 @@ class IndexerService { }); }; + readonly getPointsInfo = (address: string) => { + return fetchWithValidation(this.apiUrl, getPointsInfoResponseSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: 'veORN', + method: 'pointsInfo', + params: [address], + }), + }); + }; + + readonly getPointsAt = (timestamp = Date.now(), page?: number, pageSize?: number) => { + return fetchWithValidation(this.apiUrl, getPointsAtResponseSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: 'veORN', + method: 'pointsAt', + params: [timestamp, page, pageSize], + }), + }); + }; + /** * @param {number} amount - amount * @param {number} [timestamp = Date.now()] - timestamp, defaults to current time diff --git a/src/services/Indexer/schemas/get-points-at-schema.ts b/src/services/Indexer/schemas/get-points-at-schema.ts new file mode 100644 index 0000000..ce25e3d --- /dev/null +++ b/src/services/Indexer/schemas/get-points-at-schema.ts @@ -0,0 +1,15 @@ +import { z } from 'zod'; +import infoSchema from './info-schema.js'; + +const getPointsAtResultSchema = z.object({ + points: z.record(z.string(), z.number()), + pageSize: z.number(), + totalElements: z.number(), +}); + +const getPointsAtSchema = z.object({ + result: getPointsAtResultSchema, + info: infoSchema, +}).nullable(); + +export default getPointsAtSchema; diff --git a/src/services/Indexer/schemas/get-points-info-schema.ts b/src/services/Indexer/schemas/get-points-info-schema.ts new file mode 100644 index 0000000..38e37c8 --- /dev/null +++ b/src/services/Indexer/schemas/get-points-info-schema.ts @@ -0,0 +1,27 @@ +import { z } from 'zod'; +import { evmAddressSchema } from './util-schemas.js'; +import infoSchema from './info-schema.js'; + +const getPointsResultSchema = z.object({ + avgAPR: z.number(), + minAPR: z.number(), + maxAPR: z.number(), + veTokenAddress: evmAddressSchema, + totalPointsLocked: z.number(), + totalPoints: z.number(), + weeklyReward: z.number(), + userAPR: z.number(), + userPoints: z.number(), + userPointsLocked: z.number(), + userLockEndDate: z.number(), + userReward: z.number(), + userWeeklyReward: z.number(), + userMinLockPeriod: z.number(), +}); + +const getPointsInfoSchema = z.object({ + result: getPointsResultSchema, + info: infoSchema, +}).nullable(); + +export default getPointsInfoSchema; diff --git a/src/services/Indexer/schemas/index.ts b/src/services/Indexer/schemas/index.ts index 8690e93..911ddb2 100644 --- a/src/services/Indexer/schemas/index.ts +++ b/src/services/Indexer/schemas/index.ts @@ -9,3 +9,5 @@ export { default as veORNInfoResponseSchema } from './veORN-info-schema'; export { default as listAmountResponseSchema } from './list-amount-schema'; export { default as votingInfoResponseSchema } from './voting-info-schema'; export { default as testIncrementorSchema } from './test-incrementor-schema'; +export { default as getPointsInfoResponseSchema } from './get-points-info-schema'; +export { default as getPointsAtResponseSchema } from './get-points-at-schema'; From f91f87e376f000ac71de6ea062ffd6c19a08fab0 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Thu, 20 Jun 2024 13:21:45 +0300 Subject: [PATCH 2/4] update --- src/services/Indexer/index.ts | 22 +-------------- .../Indexer/schemas/get-points-info-schema.ts | 27 ------------------- src/services/Indexer/schemas/index.ts | 1 - .../Indexer/schemas/veORN-info-schema.ts | 8 +++--- 4 files changed, 6 insertions(+), 52 deletions(-) delete mode 100644 src/services/Indexer/schemas/get-points-info-schema.ts diff --git a/src/services/Indexer/index.ts b/src/services/Indexer/index.ts index d1fce85..2d13be7 100644 --- a/src/services/Indexer/index.ts +++ b/src/services/Indexer/index.ts @@ -1,7 +1,6 @@ import { environmentResponseSchema, getPointsAtResponseSchema, - getPointsInfoResponseSchema, getPoolResponseSchema, listAmountResponseSchema, listNFTOrderResponseSchema, @@ -53,12 +52,6 @@ type VeORNInfoPayload = BasePayload & { params: [string] }; -type GetPointsInfoPayload = BasePayload & { - model: 'veORN' - method: 'pointsInfo' - params: [string] -}; - type GetPointsAtPayload = BasePayload & { model: 'veORN' method: 'pointsInfo' @@ -82,7 +75,6 @@ type Payload = | GetPoolInfoPayload | ListPoolPayload | VeORNInfoPayload - | GetPointsInfoPayload | GetPointsAtPayload | ListAmountPayload | GetAmountByORNPayload; @@ -108,7 +100,6 @@ class IndexerService { this.poolV2Info = this.poolV2Info.bind(this); this.listPoolV3 = this.listPoolV3.bind(this); this.veORNInfo = this.veORNInfo.bind(this); - this.getPointsInfo = this.getPointsInfo.bind(this); this.getPointsAt = this.getPointsAt.bind(this); this.listAmount = this.listAmount.bind(this); this.getAmountByORN = this.getAmountByORN.bind(this); @@ -136,18 +127,7 @@ class IndexerService { }); }; - readonly getPointsInfo = (address: string) => { - return fetchWithValidation(this.apiUrl, getPointsInfoResponseSchema, { - method: 'POST', - body: this.makeRPCPayload({ - model: 'veORN', - method: 'pointsInfo', - params: [address], - }), - }); - }; - - readonly getPointsAt = (timestamp = Date.now(), page?: number, pageSize?: number) => { + readonly getPointsAt = (timestamp = Date.now(), page = 1, pageSize = 1000) => { return fetchWithValidation(this.apiUrl, getPointsAtResponseSchema, { method: 'POST', body: this.makeRPCPayload({ diff --git a/src/services/Indexer/schemas/get-points-info-schema.ts b/src/services/Indexer/schemas/get-points-info-schema.ts deleted file mode 100644 index 38e37c8..0000000 --- a/src/services/Indexer/schemas/get-points-info-schema.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { z } from 'zod'; -import { evmAddressSchema } from './util-schemas.js'; -import infoSchema from './info-schema.js'; - -const getPointsResultSchema = z.object({ - avgAPR: z.number(), - minAPR: z.number(), - maxAPR: z.number(), - veTokenAddress: evmAddressSchema, - totalPointsLocked: z.number(), - totalPoints: z.number(), - weeklyReward: z.number(), - userAPR: z.number(), - userPoints: z.number(), - userPointsLocked: z.number(), - userLockEndDate: z.number(), - userReward: z.number(), - userWeeklyReward: z.number(), - userMinLockPeriod: z.number(), -}); - -const getPointsInfoSchema = z.object({ - result: getPointsResultSchema, - info: infoSchema, -}).nullable(); - -export default getPointsInfoSchema; diff --git a/src/services/Indexer/schemas/index.ts b/src/services/Indexer/schemas/index.ts index 911ddb2..deec8a5 100644 --- a/src/services/Indexer/schemas/index.ts +++ b/src/services/Indexer/schemas/index.ts @@ -9,5 +9,4 @@ export { default as veORNInfoResponseSchema } from './veORN-info-schema'; export { default as listAmountResponseSchema } from './list-amount-schema'; export { default as votingInfoResponseSchema } from './voting-info-schema'; export { default as testIncrementorSchema } from './test-incrementor-schema'; -export { default as getPointsInfoResponseSchema } from './get-points-info-schema'; export { default as getPointsAtResponseSchema } from './get-points-at-schema'; diff --git a/src/services/Indexer/schemas/veORN-info-schema.ts b/src/services/Indexer/schemas/veORN-info-schema.ts index 5c4d018..f3f9dba 100644 --- a/src/services/Indexer/schemas/veORN-info-schema.ts +++ b/src/services/Indexer/schemas/veORN-info-schema.ts @@ -1,6 +1,6 @@ -import { z } from 'zod'; -import { evmAddressSchema } from './util-schemas.js'; -import infoSchema from './info-schema.js'; +import { z } from "zod"; +import { evmAddressSchema } from "./util-schemas.js"; +import infoSchema from "./info-schema.js"; const veORNResultSchema = z.object({ avgAPR: z.number(), @@ -17,6 +17,8 @@ const veORNResultSchema = z.object({ userReward: z.number(), userWeeklyReward: z.number(), userMinLockPeriod: z.number(), + dropLock: z.boolean(), + pointsReward: z.number(), }); const veORNInfoSchema = z.object({ From fad890eeab77a5a7e2a5f87885ec5efe57a28b46 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Fri, 21 Jun 2024 10:01:37 +0300 Subject: [PATCH 3/4] update --- package.json | 2 +- src/services/Indexer/schemas/get-points-at-schema.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index edd013e..53cccf4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.10-rc1", + "version": "0.22.10-rc2", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Indexer/schemas/get-points-at-schema.ts b/src/services/Indexer/schemas/get-points-at-schema.ts index ce25e3d..34a71c1 100644 --- a/src/services/Indexer/schemas/get-points-at-schema.ts +++ b/src/services/Indexer/schemas/get-points-at-schema.ts @@ -2,8 +2,8 @@ import { z } from 'zod'; import infoSchema from './info-schema.js'; const getPointsAtResultSchema = z.object({ - points: z.record(z.string(), z.number()), - pageSize: z.number(), + pointsObject: z.record(z.string(), z.number()), + currentPage: z.number(), totalElements: z.number(), }); From 6db981dc797f715f9f186bc9c31085fc7bb90db1 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Fri, 21 Jun 2024 10:38:58 +0300 Subject: [PATCH 4/4] update --- package.json | 2 +- src/services/Indexer/index.ts | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 53cccf4..92e5983 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.10-rc2", + "version": "0.22.10-rc3", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Indexer/index.ts b/src/services/Indexer/index.ts index 2d13be7..607d641 100644 --- a/src/services/Indexer/index.ts +++ b/src/services/Indexer/index.ts @@ -55,7 +55,7 @@ type VeORNInfoPayload = BasePayload & { type GetPointsAtPayload = BasePayload & { model: 'veORN' method: 'pointsInfo' - params: [number, number, number] + params: [number, number] }; type ListAmountPayload = BasePayload & { @@ -127,13 +127,17 @@ class IndexerService { }); }; - readonly getPointsAt = (timestamp = Date.now(), page = 1, pageSize = 1000) => { + /** + * @param {number} page - current page + * @param {number} [pageSize] - amount of items on one page + */ + readonly getPointsAt = (page = 1, pageSize = 1000) => { return fetchWithValidation(this.apiUrl, getPointsAtResponseSchema, { method: 'POST', body: this.makeRPCPayload({ model: 'veORN', method: 'pointsAt', - params: [timestamp, page, pageSize], + params: [page, pageSize], }), }); };