From baa29cf340814cac0295d868d6686ae81fd13784 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Tue, 19 Mar 2024 13:00:21 +0300 Subject: [PATCH 01/14] add frontage service and getAggregatedMetrics request --- package-lock.json | 4 +- package.json | 2 +- src/Orion/index.ts | 28 ++++-- src/Unit/index.ts | 13 ++- src/config/envs.json | 93 +++++++++++++++++++ src/config/schemas/pureEnvSchema.ts | 3 + src/services/Frontage/index.ts | 26 ++++++ .../schemas/aggregated-metrics-schema.ts | 29 ++++++ src/services/Frontage/schemas/error-schema.ts | 9 ++ src/services/Frontage/schemas/index.ts | 2 + src/types.ts | 3 + 11 files changed, 198 insertions(+), 14 deletions(-) create mode 100644 src/services/Frontage/index.ts create mode 100644 src/services/Frontage/schemas/aggregated-metrics-schema.ts create mode 100644 src/services/Frontage/schemas/error-schema.ts create mode 100644 src/services/Frontage/schemas/index.ts diff --git a/package-lock.json b/package-lock.json index 98ae3522..7b805038 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.72", + "version": "0.20.74-rc100", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.72", + "version": "0.20.74-rc100", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 8d2b156f..1e385ac4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.73", + "version": "0.20.74-rc100", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Orion/index.ts b/src/Orion/index.ts index 7245c005..7a266d5b 100644 --- a/src/Orion/index.ts +++ b/src/Orion/index.ts @@ -3,7 +3,14 @@ import { chains, envs } from '../config/index.js'; import type { networkCodes } from '../constants/index.js'; import Unit from '../Unit/index.js'; import { ReferralSystem } from '../services/ReferralSystem/index.js'; -import type { SupportedChainId, DeepPartial, VerboseUnitConfig, KnownEnv, EnvConfig, AggregatedAssets } from '../types.js'; +import type { + SupportedChainId, + DeepPartial, + VerboseUnitConfig, + KnownEnv, + EnvConfig, + AggregatedAssets +} from '../types.js'; import { isValidChainId } from '../utils/index.js'; import { simpleFetch } from 'simple-typed-fetch'; import Bridge from './bridge/index.js'; @@ -60,6 +67,9 @@ export default class Orion { }, indexer: { api: networkConfig.api + networkConfig.services.indexer?.http, + }, + frontage: { + api: networkConfig.api + networkConfig.services.frontage.http, } }, }; @@ -118,7 +128,7 @@ export default class Orion { if (!unit) { throw new Error( `Invalid network code: ${networkCodeOrChainId}. ` + - `Available network codes: ${this.unitsArray.map((u) => u.networkCode).join(', ')}`); + `Available network codes: ${this.unitsArray.map((u) => u.networkCode).join(', ')}`); } return unit; } @@ -156,7 +166,7 @@ export default class Orion { const networks = chainIds.map((chainId) => chains[chainId]?.label).join(', '); console.error( `Asset found in Aggregator, but not in BlockchainService (base): ${baseAsset} (${pair}).` + - ` Networks: ${networks}` + ` Networks: ${networks}` ); } else { tradableAggregatedAssets[baseAsset] = aggregatedBaseAsset; @@ -166,7 +176,7 @@ export default class Orion { const networks = chainIds.map((chainId) => chains[chainId]?.label).join(', '); console.error( `Asset found in Aggregator, but not in BlockchainService (quote): ${quoteAsset} (${pair}).` + - ` Networks: ${networks}` + ` Networks: ${networks}` ); } else { tradableAggregatedAssets[quoteAsset] = aggregatedQuoteAsset; @@ -178,11 +188,11 @@ export default class Orion { async getPairs(...params: Parameters) { const result: Partial< - Record< - string, - SupportedChainId[] - > - > = {}; + Record< + string, + SupportedChainId[] + > + > = {}; await Promise.all(this.unitsArray.map(async (unit) => { const pairs = await simpleFetch(unit.aggregator.getPairsList)(...params); diff --git a/src/Unit/index.ts b/src/Unit/index.ts index 85d7052d..79deda18 100644 --- a/src/Unit/index.ts +++ b/src/Unit/index.ts @@ -2,6 +2,8 @@ import { JsonRpcProvider } from 'ethers'; import { Aggregator } from '../services/Aggregator'; import { BlockchainService } from '../services/BlockchainService'; import { PriceFeed } from '../services/PriceFeed'; +import { IndexerService } from '../services/Indexer'; +import { FrontageService } from '../services/Frontage'; import type { KnownEnv, SupportedChainId, @@ -10,8 +12,7 @@ import type { import Exchange from './Exchange/index.js'; import { chains, envs } from '../config'; import type { networkCodes } from '../constants/index.js'; -import { IndexerService } from '../services/Indexer'; -import Pmm from "./Pmm"; +import Pmm from './Pmm'; type KnownConfig = { env: KnownEnv @@ -29,6 +30,8 @@ export default class Unit { public readonly indexer: IndexerService | undefined; + public readonly frontage: FrontageService | undefined; + public readonly aggregator: Aggregator; public readonly pmm: Pmm; @@ -88,6 +91,9 @@ export default class Unit { indexer: { api: networkConfig.api + networkConfig.services.indexer?.http, }, + frontage: { + api: networkConfig.api + networkConfig.services.frontage?.http, + }, }, }; } else { @@ -115,6 +121,9 @@ export default class Unit { intNetwork ) : undefined; + this.frontage = new FrontageService( + this.config.services.frontage.api, + ); this.aggregator = new Aggregator( this.config.services.aggregator.http, this.config.services.aggregator.ws, diff --git a/src/config/envs.json b/src/config/envs.json index 6628b384..55a72bfa 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -17,6 +17,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } }, "liquidityMigratorAddress": "0x23a1820a47BcD022E29f6058a5FD224242F50D1A" @@ -36,6 +39,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -54,6 +60,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -72,6 +81,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -90,6 +102,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -108,6 +123,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -126,6 +144,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -144,6 +165,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -162,6 +186,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } } @@ -185,6 +212,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } }, "liquidityMigratorAddress": "0x01b10dds12478C88A5E18e2707E729906bC25CfF6" @@ -204,6 +234,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -222,6 +255,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -240,6 +276,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -258,6 +297,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -276,6 +318,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } } @@ -299,6 +344,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -317,6 +365,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -335,6 +386,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -353,6 +407,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -371,6 +428,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -389,6 +449,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -407,6 +470,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -425,6 +491,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -443,6 +512,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } } @@ -466,6 +538,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -484,6 +559,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } } @@ -507,6 +585,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } }, "liquidityMigratorAddress": "0x23a1820a47BcD022E29f6058a5FD224242F50D1A" @@ -526,6 +607,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -544,6 +628,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -562,6 +649,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } }, @@ -580,6 +670,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage/" } } } diff --git a/src/config/schemas/pureEnvSchema.ts b/src/config/schemas/pureEnvSchema.ts index 9c799c44..31f503cd 100644 --- a/src/config/schemas/pureEnvSchema.ts +++ b/src/config/schemas/pureEnvSchema.ts @@ -17,6 +17,9 @@ export const pureEnvNetworksSchema = z.object({ indexer: z.object({ http: z.string(), }).optional(), + frontage: z.object({ + http: z.string(), + }), }), rpc: z.string().optional(), liquidityMigratorAddress: z.string().optional(), diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts new file mode 100644 index 00000000..9542efd2 --- /dev/null +++ b/src/services/Frontage/index.ts @@ -0,0 +1,26 @@ +import { fetchWithValidation } from 'simple-typed-fetch'; +import { aggregatedMetricsSchema } from './schemas'; + +export class FrontageService { + private readonly apiUrl: string; + + get api() { + return this.apiUrl; + } + + constructor(apiUrl: string) { + this.apiUrl = apiUrl; + + this.getAggregatedMetrics = this.getAggregatedMetrics.bind(this); + } + + readonly getAggregatedMetrics = () => { + const url = new URL(`${this.apiUrl}/api/v1/metrics/aggregated`); + return fetchWithValidation( + url.toString(), + aggregatedMetricsSchema, + ); + }; +} + +export * as schemas from './schemas/index.js'; diff --git a/src/services/Frontage/schemas/aggregated-metrics-schema.ts b/src/services/Frontage/schemas/aggregated-metrics-schema.ts new file mode 100644 index 00000000..f68a1adf --- /dev/null +++ b/src/services/Frontage/schemas/aggregated-metrics-schema.ts @@ -0,0 +1,29 @@ +import { z } from 'zod'; +import { networkCodes } from '../../../constants'; + +const volumeInfoSchema = z.object({ + volume24: z.number(), + volume7d: z.number(), + volumeAllTime: z.number(), + networks: z.array(z.enum(networkCodes)), +}) + +const supplyMetricsSchema = z.object({ + circulatingSupply: z.number(), + totalSupply: z.number(), + maxSupply: z.number(), +}) + +const governanceMetricsSchema = z.object({ + totalLumiaLocked: z.number(), + totalVeLumia: z.number(), + totalVeLumiaInVoting: z.number(), + weeklyLumiaReward: z.number(), + networks: z.array(z.enum(networkCodes)), +}) + +export const aggregatedMetricsSchema = z.object({ + volumeInfo: volumeInfoSchema, + supplyMetrics: supplyMetricsSchema, + governanceMetrics: governanceMetricsSchema +}); diff --git a/src/services/Frontage/schemas/error-schema.ts b/src/services/Frontage/schemas/error-schema.ts new file mode 100644 index 00000000..1163d5f3 --- /dev/null +++ b/src/services/Frontage/schemas/error-schema.ts @@ -0,0 +1,9 @@ +import { z } from 'zod'; + +export const errorSchema = z.object({ + error: z.object({ + code: z.number(), + reason: z.string(), + }), + timestamp: z.string(), +}); diff --git a/src/services/Frontage/schemas/index.ts b/src/services/Frontage/schemas/index.ts new file mode 100644 index 00000000..6edc7082 --- /dev/null +++ b/src/services/Frontage/schemas/index.ts @@ -0,0 +1,2 @@ +export * from './aggregated-metrics-schema'; +export * from './error-schema'; diff --git a/src/types.ts b/src/types.ts index 0f1bbb36..c4a935f8 100644 --- a/src/types.ts +++ b/src/types.ts @@ -264,6 +264,9 @@ export type VerboseUnitConfig = { // http://10.23.5.11:3003/, // https://price-feed:3003/ } + frontage: { + api: string + } indexer?: { api: string // For example: From 67cbb1a8ebebddebb9c62c75cecb76ed72c46a41 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Tue, 19 Mar 2024 14:38:42 +0300 Subject: [PATCH 02/14] types fix --- package-lock.json | 4 ++-- package.json | 2 +- src/Unit/index.ts | 2 +- src/services/Frontage/index.ts | 4 ---- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7b805038..43ec5a2a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc100", + "version": "0.20.74-rc101", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc100", + "version": "0.20.74-rc101", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 1e385ac4..2aa1e8ea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc100", + "version": "0.20.74-rc101", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/index.ts b/src/Unit/index.ts index 79deda18..8c906e1d 100644 --- a/src/Unit/index.ts +++ b/src/Unit/index.ts @@ -30,7 +30,7 @@ export default class Unit { public readonly indexer: IndexerService | undefined; - public readonly frontage: FrontageService | undefined; + public readonly frontage: FrontageService; public readonly aggregator: Aggregator; diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index 9542efd2..c721a550 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -4,10 +4,6 @@ import { aggregatedMetricsSchema } from './schemas'; export class FrontageService { private readonly apiUrl: string; - get api() { - return this.apiUrl; - } - constructor(apiUrl: string) { this.apiUrl = apiUrl; From 01278117fa135ef52d6b79cd426a4ee717eb805a Mon Sep 17 00:00:00 2001 From: TheJuze Date: Tue, 19 Mar 2024 15:09:33 +0300 Subject: [PATCH 03/14] types fix --- package-lock.json | 4 ++-- package.json | 2 +- src/services/Frontage/schemas/index.ts | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 43ec5a2a..beba604a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc101", + "version": "0.20.74-rc102", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc101", + "version": "0.20.74-rc102", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 2aa1e8ea..e92dbe63 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc101", + "version": "0.20.74-rc102", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/schemas/index.ts b/src/services/Frontage/schemas/index.ts index 6edc7082..e97697e9 100644 --- a/src/services/Frontage/schemas/index.ts +++ b/src/services/Frontage/schemas/index.ts @@ -1,2 +1 @@ export * from './aggregated-metrics-schema'; -export * from './error-schema'; From 5296ecbc3d8c9705308912c5c2f25e4bf7012acd Mon Sep 17 00:00:00 2001 From: TheJuze Date: Tue, 19 Mar 2024 17:10:18 +0300 Subject: [PATCH 04/14] commit --- package-lock.json | 18 +++++++++--------- package.json | 4 ++-- src/services/Frontage/index.ts | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index beba604a..39633be7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc102", + "version": "0.20.74-rc103", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc102", + "version": "0.20.74-rc103", "hasInstallScript": true, "license": "ISC", "dependencies": { @@ -27,7 +27,7 @@ "merge-anything": "^5.1.7", "neverthrow": "^6.0.0", "patch-package": "^8.0.0", - "simple-typed-fetch": "0.2.3", + "simple-typed-fetch": "0.2.5", "stream-browserify": "^3.0.0", "tiny-invariant": "^1.3.1", "ts-is-present": "^1.2.2", @@ -10406,9 +10406,9 @@ "dev": true }, "node_modules/simple-typed-fetch": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/simple-typed-fetch/-/simple-typed-fetch-0.2.3.tgz", - "integrity": "sha512-EXP2mVVsVf4A3+5QGevs8789ztnT6FozsYyMrIrUYhfqtX2V+X9xETHeGXffmgv7YQ0p+GrW7N+5x+b+pBW59Q==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/simple-typed-fetch/-/simple-typed-fetch-0.2.5.tgz", + "integrity": "sha512-T/KKUHKOZgaYVp3dbjE1wEK5cAGmG5N7FNAzP6ZGqLDhzBsRm3Gpt8bO/kowV6bt8duXDWiapYFQibW/8iHp6Q==", "dependencies": { "isomorphic-unfetch": "^4.0.2", "neverthrow": "^6.0.0", @@ -19346,9 +19346,9 @@ "dev": true }, "simple-typed-fetch": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/simple-typed-fetch/-/simple-typed-fetch-0.2.3.tgz", - "integrity": "sha512-EXP2mVVsVf4A3+5QGevs8789ztnT6FozsYyMrIrUYhfqtX2V+X9xETHeGXffmgv7YQ0p+GrW7N+5x+b+pBW59Q==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/simple-typed-fetch/-/simple-typed-fetch-0.2.5.tgz", + "integrity": "sha512-T/KKUHKOZgaYVp3dbjE1wEK5cAGmG5N7FNAzP6ZGqLDhzBsRm3Gpt8bO/kowV6bt8duXDWiapYFQibW/8iHp6Q==", "requires": { "isomorphic-unfetch": "^4.0.2", "neverthrow": "^6.0.0", diff --git a/package.json b/package.json index e92dbe63..0279c4d9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc102", + "version": "0.20.74-rc103", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", @@ -103,7 +103,7 @@ "merge-anything": "^5.1.7", "neverthrow": "^6.0.0", "patch-package": "^8.0.0", - "simple-typed-fetch": "0.2.3", + "simple-typed-fetch": "0.2.5", "stream-browserify": "^3.0.0", "tiny-invariant": "^1.3.1", "ts-is-present": "^1.2.2", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index c721a550..b2bd394f 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -11,7 +11,7 @@ export class FrontageService { } readonly getAggregatedMetrics = () => { - const url = new URL(`${this.apiUrl}/api/v1/metrics/aggregated`); + const url = new URL(`${this.apiUrl}api/v1/metrics/aggregated`); return fetchWithValidation( url.toString(), aggregatedMetricsSchema, From edc3586166ffcc602698bf7da8a37f77fbbca6fd Mon Sep 17 00:00:00 2001 From: TheJuze Date: Tue, 19 Mar 2024 17:34:00 +0300 Subject: [PATCH 05/14] =?UTF-8?q?=F0=9F=97=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 4 +- package.json | 2 +- src/Orion/index.ts | 12 ++-- src/Unit/index.ts | 11 +--- src/config/envs.json | 98 ++--------------------------- src/config/index.ts | 2 +- src/config/schemas/pureEnvSchema.ts | 4 +- src/types.ts | 4 +- 8 files changed, 19 insertions(+), 118 deletions(-) diff --git a/package-lock.json b/package-lock.json index 39633be7..c7495b1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc103", + "version": "0.20.74-rc104", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc103", + "version": "0.20.74-rc104", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 0279c4d9..4d28ebf7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc103", + "version": "0.20.74-rc104", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Orion/index.ts b/src/Orion/index.ts index 7a266d5b..25ef84d0 100644 --- a/src/Orion/index.ts +++ b/src/Orion/index.ts @@ -1,8 +1,8 @@ import { merge } from 'merge-anything'; -import { chains, envs } from '../config/index.js'; +import { chains, envs } from '../config'; import type { networkCodes } from '../constants/index.js'; import Unit from '../Unit/index.js'; -import { ReferralSystem } from '../services/ReferralSystem/index.js'; +import { ReferralSystem } from '../services/ReferralSystem'; import type { SupportedChainId, DeepPartial, @@ -14,6 +14,7 @@ import type { import { isValidChainId } from '../utils/index.js'; import { simpleFetch } from 'simple-typed-fetch'; import Bridge from './bridge/index.js'; +import { FrontageService } from '../services/Frontage'; export default class Orion { public readonly env?: string; @@ -22,6 +23,8 @@ export default class Orion { public readonly referralSystem: ReferralSystem; + public readonly frontage: FrontageService; + public readonly bridge: Bridge; // TODO: get tradable assets (aggregated) @@ -42,6 +45,7 @@ export default class Orion { config = { analyticsAPI: envConfig?.analyticsAPI, referralAPI: envConfig.referralAPI, + frontageAPI: envConfig.frontageAPI, networks: Object.entries(envConfig.networks).map(([chainId, networkConfig]) => { if (!isValidChainId(chainId)) throw new Error(`Invalid chainId: ${chainId}`); const chainConfig = chains[chainId]; @@ -67,9 +71,6 @@ export default class Orion { }, indexer: { api: networkConfig.api + networkConfig.services.indexer?.http, - }, - frontage: { - api: networkConfig.api + networkConfig.services.frontage.http, } }, }; @@ -89,6 +90,7 @@ export default class Orion { } this.referralSystem = new ReferralSystem(config.referralAPI); + this.frontage = new FrontageService(config.frontageAPI); this.units = Object.entries(config.networks) .reduce>>((acc, [chainId, networkConfig]) => { diff --git a/src/Unit/index.ts b/src/Unit/index.ts index 8c906e1d..19c27e45 100644 --- a/src/Unit/index.ts +++ b/src/Unit/index.ts @@ -3,7 +3,6 @@ import { Aggregator } from '../services/Aggregator'; import { BlockchainService } from '../services/BlockchainService'; import { PriceFeed } from '../services/PriceFeed'; import { IndexerService } from '../services/Indexer'; -import { FrontageService } from '../services/Frontage'; import type { KnownEnv, SupportedChainId, @@ -30,8 +29,6 @@ export default class Unit { public readonly indexer: IndexerService | undefined; - public readonly frontage: FrontageService; - public readonly aggregator: Aggregator; public readonly pmm: Pmm; @@ -90,10 +87,7 @@ export default class Unit { }, indexer: { api: networkConfig.api + networkConfig.services.indexer?.http, - }, - frontage: { - api: networkConfig.api + networkConfig.services.frontage?.http, - }, + } }, }; } else { @@ -121,9 +115,6 @@ export default class Unit { intNetwork ) : undefined; - this.frontage = new FrontageService( - this.config.services.frontage.api, - ); this.aggregator = new Aggregator( this.config.services.aggregator.http, this.config.services.aggregator.ws, diff --git a/src/config/envs.json b/src/config/envs.json index 55a72bfa..a6ce4d08 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -1,6 +1,7 @@ { "production": { "referralAPI": "https://trade.orion.xyz/referral-api", + "frontageAPI": "https://trade.orion.xyz/frontage", "networks": { "1": { "api": "https://trade.orion.xyz/eth-mainnet", @@ -17,9 +18,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } }, "liquidityMigratorAddress": "0x23a1820a47BcD022E29f6058a5FD224242F50D1A" @@ -39,9 +37,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -60,9 +55,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -81,9 +73,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -102,9 +91,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -123,9 +109,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -144,9 +127,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -165,9 +145,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -186,9 +163,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } } @@ -196,6 +170,7 @@ }, "testing": { "referralAPI": "https://testing.orion.xyz/referral-api", + "frontageAPI": "https://testing.orion.xyz/frontage", "networks": { "97": { "api": "https://testing.orion.xyz/bsc-testnet", @@ -212,9 +187,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } }, "liquidityMigratorAddress": "0x01b10dds12478C88A5E18e2707E729906bC25CfF6" @@ -234,9 +206,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -255,9 +224,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -276,9 +242,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -297,9 +260,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -318,9 +278,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } } @@ -328,6 +285,7 @@ }, "staging": { "referralAPI": "https://staging.orion.xyz/referral-api", + "frontageAPI": "https://staging.orion.xyz/frontage", "networks": { "1": { "api": "https://staging.orion.xyz/eth-mainnet", @@ -344,9 +302,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -365,9 +320,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -386,9 +338,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -407,9 +356,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -428,9 +374,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -449,9 +392,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -470,9 +410,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -491,9 +428,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -512,9 +446,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } } @@ -522,6 +453,7 @@ }, "experimental": { "referralAPI": "https://testing.orion.xyz/referral-api", + "frontageAPI": "https://testing.orion.xyz/frontage", "networks": { "97": { "api": "https://dn-dev.orion.xyz/bsc-testnet", @@ -538,9 +470,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -559,9 +488,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } } @@ -569,6 +495,7 @@ }, "kucoin-production": { "referralAPI": "https://trade.orion.xyz/referral-api", + "frontageAPI": "https://trade.orion.xyz/frontage", "networks": { "1": { "api": "https://trade.orion.xyz/eth-mainnet", @@ -585,9 +512,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } }, "liquidityMigratorAddress": "0x23a1820a47BcD022E29f6058a5FD224242F50D1A" @@ -607,9 +531,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -628,9 +549,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -649,9 +567,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } }, @@ -670,9 +585,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage/" } } } diff --git a/src/config/index.ts b/src/config/index.ts index aab5746e..d97b3667 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -1,6 +1,6 @@ import jsonChains from './chains.json' assert { type: 'json' }; import jsonEnvs from './envs.json' assert { type: 'json' }; -import { pureEnvSchema, pureChainInfoSchema } from './schemas/index.js'; +import { pureEnvSchema, pureChainInfoSchema } from './schemas'; const chains = pureChainInfoSchema.parse(jsonChains); const envs = pureEnvSchema.parse(jsonEnvs); diff --git a/src/config/schemas/pureEnvSchema.ts b/src/config/schemas/pureEnvSchema.ts index 31f503cd..55a25ee2 100644 --- a/src/config/schemas/pureEnvSchema.ts +++ b/src/config/schemas/pureEnvSchema.ts @@ -17,9 +17,6 @@ export const pureEnvNetworksSchema = z.object({ indexer: z.object({ http: z.string(), }).optional(), - frontage: z.object({ - http: z.string(), - }), }), rpc: z.string().optional(), liquidityMigratorAddress: z.string().optional(), @@ -28,6 +25,7 @@ export const pureEnvNetworksSchema = z.object({ export const pureEnvPayloadSchema = z.object({ analyticsAPI: z.string().url().optional(), referralAPI: z.string().url(), + frontageAPI: z.string().url(), networks: z.record( z.nativeEnum(SupportedChainId), pureEnvNetworksSchema diff --git a/src/types.ts b/src/types.ts index c4a935f8..cdd181b1 100644 --- a/src/types.ts +++ b/src/types.ts @@ -264,9 +264,6 @@ export type VerboseUnitConfig = { // http://10.23.5.11:3003/, // https://price-feed:3003/ } - frontage: { - api: string - } indexer?: { api: string // For example: @@ -284,6 +281,7 @@ export type Json = string | number | boolean | null | Json[] | { [key: string]: export type EnvConfig = { analyticsAPI: string | undefined referralAPI: string + frontageAPI: string networks: Partial< Record< SupportedChainId, From c9cd52159ae4bb3b42f26bef1ade1dc312803ea7 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Tue, 19 Mar 2024 17:41:56 +0300 Subject: [PATCH 06/14] update metrics url --- package.json | 2 +- src/services/Frontage/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4d28ebf7..c09eb277 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc104", + "version": "0.20.74-rc105", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index b2bd394f..c721a550 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -11,7 +11,7 @@ export class FrontageService { } readonly getAggregatedMetrics = () => { - const url = new URL(`${this.apiUrl}api/v1/metrics/aggregated`); + const url = new URL(`${this.apiUrl}/api/v1/metrics/aggregated`); return fetchWithValidation( url.toString(), aggregatedMetricsSchema, From 089764eff4087ebf433fc986f7a26ffd430996b3 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Tue, 19 Mar 2024 17:57:49 +0300 Subject: [PATCH 07/14] add export --- package.json | 2 +- src/services/index.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index c09eb277..2d43d1ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc105", + "version": "0.20.74-rc106", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/index.ts b/src/services/index.ts index ca04ebd0..2418cec9 100644 --- a/src/services/index.ts +++ b/src/services/index.ts @@ -2,4 +2,5 @@ export * as aggregator from './Aggregator/index.js'; export * as blockchainService from './BlockchainService/index.js'; export * as priceFeed from './PriceFeed/index.js'; export * as referralSystem from './ReferralSystem/index.js'; +export * as frontage from './Frontage'; export * as indexer from './Indexer/index.js'; From 121e1176bcbf9ead19ffded2a6e75f2d6c50fa15 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Tue, 19 Mar 2024 18:02:29 +0300 Subject: [PATCH 08/14] update schema --- package.json | 2 +- src/services/Frontage/schemas/aggregated-metrics-schema.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 2d43d1ca..b93b648f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc106", + "version": "0.20.74-rc107", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/schemas/aggregated-metrics-schema.ts b/src/services/Frontage/schemas/aggregated-metrics-schema.ts index f68a1adf..e94c8eda 100644 --- a/src/services/Frontage/schemas/aggregated-metrics-schema.ts +++ b/src/services/Frontage/schemas/aggregated-metrics-schema.ts @@ -1,11 +1,11 @@ import { z } from 'zod'; -import { networkCodes } from '../../../constants'; +import uppercasedNetworkCodes from '../../../constants/uppercasedNetworkCodes'; const volumeInfoSchema = z.object({ volume24: z.number(), volume7d: z.number(), volumeAllTime: z.number(), - networks: z.array(z.enum(networkCodes)), + networks: z.array(z.enum(uppercasedNetworkCodes)), }) const supplyMetricsSchema = z.object({ @@ -19,7 +19,7 @@ const governanceMetricsSchema = z.object({ totalVeLumia: z.number(), totalVeLumiaInVoting: z.number(), weeklyLumiaReward: z.number(), - networks: z.array(z.enum(networkCodes)), + networks: z.array(z.enum(uppercasedNetworkCodes)), }) export const aggregatedMetricsSchema = z.object({ From 970ae5d8b174d1908e931fd17e524735e2b3ad90 Mon Sep 17 00:00:00 2001 From: Olga Kanishcheva Date: Tue, 8 Oct 2024 15:49:13 +0400 Subject: [PATCH 09/14] Update package.json --- 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 6f2a89e1..7a950a36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.15", + "version": "0.22.15-rc1000", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.22.15", + "version": "0.22.15-rc1000", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 61d291a1..d266af0a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.15", + "version": "0.22.15-rc1000", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 3f96abeac15d44b2cc05190bffd2dd61917fce3c Mon Sep 17 00:00:00 2001 From: Olga Kanishcheva Date: Tue, 8 Oct 2024 15:54:48 +0400 Subject: [PATCH 10/14] Update package.json --- src/services/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/services/index.ts b/src/services/index.ts index 545e9940..004c45f6 100644 --- a/src/services/index.ts +++ b/src/services/index.ts @@ -2,6 +2,5 @@ export * as aggregator from './Aggregator/index.js'; export * as blockchainService from './BlockchainService/index.js'; export * as priceFeed from './PriceFeed/index.js'; export * as referralSystem from './ReferralSystem/index.js'; -export * as frontage from './Frontage'; export * as indexer from './Indexer/index.js'; export * as frontage from './Frontage/index.js'; From ff2f4acdc365be2d0d27a4da59c78a548a0f4a9c Mon Sep 17 00:00:00 2001 From: Olga Kanishcheva Date: Tue, 8 Oct 2024 16:06:46 +0400 Subject: [PATCH 11/14] OP-5918: add Lumia --- src/config/chains.json | 13 +++++++++++++ src/config/envs.json | 18 ++++++++++++++++++ src/constants/chains.ts | 1 + src/types.ts | 1 + 4 files changed, 33 insertions(+) diff --git a/src/config/chains.json b/src/config/chains.json index 3b673eda..45f70282 100644 --- a/src/config/chains.json +++ b/src/config/chains.json @@ -193,5 +193,18 @@ "WETH": "0x4200000000000000000000000000000000000006", "curveRegistry": "" } + }, + "994873017": { + "chainId": "994873017", + "label": "Lumia", + "shortName": "Lumia", + "code": "lumia", + "baseCurrencyName": "LUMIA", + "rpc": "https://mainnet-rpc.lumia.org/", + "explorer": "https://explorer.lumia.org", + "contracts": { + "WETH": "", + "curveRegistry": "" + } } } diff --git a/src/config/envs.json b/src/config/envs.json index 789cb5cf..88f03621 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -201,6 +201,24 @@ "http": "/orion-indexer/" } } + }, + "994873017": { + "api": "https://trade.orion.xyz/lumia-mainnet", + "services": { + "aggregator": { + "http": "/backend", + "ws": "/v1" + }, + "blockchain": { + "http": "" + }, + "priceFeed": { + "all": "/price-feed" + }, + "indexer": { + "http": "/orion-indexer/" + } + } } } }, diff --git a/src/constants/chains.ts b/src/constants/chains.ts index 02190479..3b03a722 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -18,4 +18,5 @@ export const productionChains = [ SupportedChainId.LINEA, SupportedChainId.AVAX, SupportedChainId.BASE, + SupportedChainId.LUMIA, ]; diff --git a/src/types.ts b/src/types.ts index 602f5932..0267700f 100644 --- a/src/types.ts +++ b/src/types.ts @@ -92,6 +92,7 @@ export enum SupportedChainId { ARBITRUM = '42161', AVAX = '43114', LINEA = '59144', + LUMIA = '994873017', BSC_TESTNET = '97', SEPOLIA = '11155111', From c78e5f3589c0008f145ad7e3c4b0b964d372aa1e Mon Sep 17 00:00:00 2001 From: Olga Kanishcheva Date: Tue, 8 Oct 2024 16:07:13 +0400 Subject: [PATCH 12/14] Update package.json --- 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 7a950a36..7b3dc914 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.15-rc1000", + "version": "0.22.15-rc1001", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.22.15-rc1000", + "version": "0.22.15-rc1001", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index d266af0a..c87b5ad9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.15-rc1000", + "version": "0.22.15-rc1001", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 877d9a7c06fb31156ecdcb68d52aaa5da10d8945 Mon Sep 17 00:00:00 2001 From: Olga Kanishcheva Date: Fri, 11 Oct 2024 10:34:18 +0400 Subject: [PATCH 13/14] OP-5918: edit blockchain info schema --- src/services/BlockchainService/schemas/infoSchema.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/BlockchainService/schemas/infoSchema.ts b/src/services/BlockchainService/schemas/infoSchema.ts index 0294e8a2..fada7995 100644 --- a/src/services/BlockchainService/schemas/infoSchema.ts +++ b/src/services/BlockchainService/schemas/infoSchema.ts @@ -13,7 +13,7 @@ const infoSchema = z.object({ swapExecutorContractAddress: z.string(), libValidatorContractAddress: z.string().optional(), exchangeContractAddress: z.string(), - spvContractAddress: z.string(), + spvContractAddress: z.string().optional(), oracleContractAddress: z.string(), matcherAddress: z.string(), orderFeePercent: z.number(), From 78515869ae046f92ee1caa95c6ff9a7d1c38fb2e Mon Sep 17 00:00:00 2001 From: Olga Kanishcheva Date: Fri, 11 Oct 2024 10:35:43 +0400 Subject: [PATCH 14/14] Update package.json --- 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 7b3dc914..f7772ccf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.15-rc1001", + "version": "0.22.15-rc1002", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.22.15-rc1001", + "version": "0.22.15-rc1002", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index c87b5ad9..855ecac2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.15-rc1001", + "version": "0.22.15-rc1002", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js",