UNPKG

@yoroi/api

Version:
36 lines (35 loc) 1.41 kB
"use strict"; import { createTypeGuardFromSchema, fetcher } from '@yoroi/common'; import { z } from 'zod'; export const getFrontendFees = (baseUrl, request = fetcher) => async () => { return request({ url: `${baseUrl}/v2.1/swap/feesInfo`, data: undefined, method: 'GET', headers: { 'Content-Type': 'application/json' } }).then(response => { const parsedResponse = parseFrontendFeesResponse(response); if (!parsedResponse) return Promise.reject(new Error('Invalid frontend fee response')); return Promise.resolve(parsedResponse); }); }; const SwapAggregatorSchema = z.union([z.literal('muesliswap'), z.literal('dexhunter')]); const AppFrontendFeesTierSchema = z.object({ primaryTokenValueThreshold: z.string(), secondaryTokenBalanceThreshold: z.string(), variableFeeMultiplier: z.number(), fixedFee: z.string() }); const AppFrontendFeesResponseSchema = z.record(z.array(AppFrontendFeesTierSchema)).refine(object => { const keys = Object.keys(object); return keys.every(key => SwapAggregatorSchema.safeParse(key).success); }, { message: "Aggregator must be 'muesliswap', 'dexhunter', or an empty object" }); export const isFrontendFeesResponse = createTypeGuardFromSchema(AppFrontendFeesResponseSchema); export const parseFrontendFeesResponse = data => { return isFrontendFeesResponse(data) ? data : undefined; }; //# sourceMappingURL=frontend-fees.js.map