add veORN method

This commit is contained in:
TheJuze
2023-09-27 16:20:35 +03:00
parent 716762ce11
commit d6b1c625b3
5 changed files with 54 additions and 7 deletions

4
package-lock.json generated
View File

@@ -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": {

View File

@@ -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",

View File

@@ -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<Payload, 'chainId' | 'jsonrpc'>) => {
@@ -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';

View File

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

View File

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