From d6dcbab12860aae4e271fb32f4e84c56ddb48466 Mon Sep 17 00:00:00 2001 From: Aleksandr Kraiz Date: Wed, 15 Mar 2023 13:15:24 +0400 Subject: [PATCH] Fix pools schema --- package.json | 2 +- src/addressSchema.ts | 8 ++++++++ .../schemas/poolsConfigSchema.ts | 18 +++++++++--------- 3 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 src/addressSchema.ts diff --git a/package.json b/package.json index 2043489..490b055 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.17.33", + "version": "0.17.34", "description": "Orion Protocol SDK", "main": "./lib/esm/index.js", "module": "./lib/esm/index.js", diff --git a/src/addressSchema.ts b/src/addressSchema.ts new file mode 100644 index 0000000..982eda1 --- /dev/null +++ b/src/addressSchema.ts @@ -0,0 +1,8 @@ +import { ethers } from 'ethers'; +import { z } from 'zod'; + +const addressSchema = z.string().refine(ethers.utils.isAddress, (value) => ({ + message: `Should be an address, got ${value}`, +})); + +export default addressSchema; diff --git a/src/services/OrionBlockchain/schemas/poolsConfigSchema.ts b/src/services/OrionBlockchain/schemas/poolsConfigSchema.ts index bb41269..0ae0f80 100644 --- a/src/services/OrionBlockchain/schemas/poolsConfigSchema.ts +++ b/src/services/OrionBlockchain/schemas/poolsConfigSchema.ts @@ -1,30 +1,30 @@ -import { ethers } from 'ethers'; import { z } from 'zod'; +import addressSchema from '../../../addressSchema'; import { makePartial } from '../../../utils'; const poolsConfigSchema = z.object({ - WETHAddress: z.string().optional(), - factoryAddress: z.string(), - governanceAddress: z.string(), - routerAddress: z.string(), - votingAddress: z.string(), + WETHAddress: addressSchema.optional(), + factoryAddress: addressSchema, + governanceAddress: addressSchema.optional(), + routerAddress: addressSchema, + votingAddress: addressSchema.optional(), factories: z.record( z.string(), - z.string().refine(ethers.utils.isAddress, 'Factory should be an address'), + addressSchema, ) .transform(makePartial) .optional(), pools: z.record( z.string(), z.object({ - lpTokenAddress: z.string(), + lpTokenAddress: addressSchema, minQty: z.number().optional(), reverted: z.boolean().optional(), rewardToken: z.string().nullable().optional(), state: z.number().int().optional(), rewardTokenDecimals: z.number().int().optional(), stakingRewardFinish: z.number().optional(), - stakingRewardAddress: z.string(), + stakingRewardAddress: addressSchema, vote_rewards_disabled: z.boolean().optional(), }), ).transform(makePartial),