@yoroi/api
Version:
The API package of Yoroi SDK
42 lines (41 loc) • 1.75 kB
JavaScript
;
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