UNPKG

@yoroi/api

Version:
42 lines (41 loc) 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseFrontendFeesResponse = exports.isFrontendFeesResponse = exports.getFrontendFees = void 0; var _common = require("@yoroi/common"); var _zod = require("zod"); const getFrontendFees = (baseUrl, request = _common.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); }); }; exports.getFrontendFees = getFrontendFees; const SwapAggregatorSchema = _zod.z.union([_zod.z.literal('muesliswap'), _zod.z.literal('dexhunter')]); const AppFrontendFeesTierSchema = _zod.z.object({ primaryTokenValueThreshold: _zod.z.string(), secondaryTokenBalanceThreshold: _zod.z.string(), variableFeeMultiplier: _zod.z.number(), fixedFee: _zod.z.string() }); const AppFrontendFeesResponseSchema = _zod.z.record(_zod.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" }); const isFrontendFeesResponse = exports.isFrontendFeesResponse = (0, _common.createTypeGuardFromSchema)(AppFrontendFeesResponseSchema); const parseFrontendFeesResponse = data => { return isFrontendFeesResponse(data) ? data : undefined; }; exports.parseFrontendFeesResponse = parseFrontendFeesResponse; //# sourceMappingURL=frontend-fees.js.map