diff --git a/package-lock.json b/package-lock.json index f229d38..0f00b09 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.42-rc11", + "version": "0.20.42-rc12", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.42-rc11", + "version": "0.20.42-rc12", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 132c8cf..b1e16fc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.42-rc11", + "version": "0.20.42-rc12", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/crypt/signLockOrder.ts b/src/crypt/signLockOrder.ts index 3b1110c..2849b6b 100644 --- a/src/crypt/signLockOrder.ts +++ b/src/crypt/signLockOrder.ts @@ -20,6 +20,7 @@ export type LockOrderProps = { signer: ethers.Signer chainId: SupportedChainId targetChainId: SupportedChainId + logger?: (message: string) => void } export const signLockOrder = async ({ @@ -29,7 +30,8 @@ export const signLockOrder = async ({ chainId, targetChainId, asset, - signer + signer, + logger }: LockOrderProps) => { const nonce = Date.now(); const expiration = nonce + DEFAULT_EXPIRATION; @@ -49,19 +51,23 @@ export const signLockOrder = async ({ targetChainId, secretHash, }; + logger?.('❌ test1'); // eslint-disable-next-line @typescript-eslint/consistent-type-assertions const typedDataSigner = signer as SignerWithTypedDataSign; + logger?.('❌ test2'); const signature = await typedDataSigner.signTypedData( getDomainData(chainId), ORDER_TYPES, order, ); + logger?.('❌ test3'); // https://github.com/poap-xyz/poap-fun/pull/62#issue-928290265 // "Signature's v was always send as 27 or 28, but from Ledger was 0 or 1" const fixedSignature = ethers.Signature.from(signature).serialized; + logger?.('❌ test4'); // if (!fixedSignature) throw new Error("Can't sign order"); diff --git a/src/services/Aggregator/index.ts b/src/services/Aggregator/index.ts index d28fc5a..300067e 100644 --- a/src/services/Aggregator/index.ts +++ b/src/services/Aggregator/index.ts @@ -1,249 +1,248 @@ -import type {BigNumber} from 'bignumber.js'; -import {z} from 'zod'; +import type { BigNumber } from 'bignumber.js'; +import { z } from 'zod'; import swapInfoSchema from './schemas/swapInfoSchema.js'; import exchangeInfoSchema from './schemas/exchangeInfoSchema.js'; import cancelOrderSchema from './schemas/cancelOrderSchema.js'; import orderBenefitsSchema from './schemas/orderBenefitsSchema.js'; import errorSchema from './schemas/errorSchema.js'; import placeAtomicSwapSchema from './schemas/placeAtomicSwapSchema.js'; -import {AggregatorWS} from './ws'; -import {atomicSwapHistorySchema} from './schemas/atomicSwapHistorySchema.js'; +import { AggregatorWS } from './ws'; +import { atomicSwapHistorySchema } from './schemas/atomicSwapHistorySchema.js'; import type { - BasicAuthCredentials, - OrderSource, - NetworkShortName, - SignedLockOrder, - SignedCancelOrderRequest, - SignedOrder + BasicAuthCredentials, + OrderSource, + NetworkShortName, + SignedLockOrder, + SignedCancelOrderRequest, + SignedOrder } from '../../types.js'; import { - pairConfigSchema, aggregatedOrderbookSchema, - exchangeOrderbookSchema, poolReservesSchema, + pairConfigSchema, aggregatedOrderbookSchema, + exchangeOrderbookSchema, poolReservesSchema, } from './schemas/index.js'; import toUpperCase from '../../utils/toUpperCase.js'; import httpToWS from '../../utils/httpToWS.js'; -import {ethers} from 'ethers'; +import { ethers } from 'ethers'; import orderSchema from './schemas/orderSchema.js'; -import {fetchWithValidation} from 'simple-typed-fetch'; +import { fetchWithValidation } from 'simple-typed-fetch'; class Aggregator { - private readonly apiUrl: string; + private readonly apiUrl: string; - readonly ws: AggregatorWS; + readonly ws: AggregatorWS; - private readonly basicAuth?: BasicAuthCredentials | undefined; + private readonly basicAuth?: BasicAuthCredentials | undefined; - get api() { - return this.apiUrl; - } + get api() { + return this.apiUrl; + } - constructor( - httpAPIUrl: string, - wsAPIUrl: string, - basicAuth?: BasicAuthCredentials - ) { - // const oaUrl = new URL(apiUrl); - // const oaWsProtocol = oaUrl.protocol === 'https:' ? 'wss' : 'ws'; - // const aggregatorWsUrl = `${oaWsProtocol}://${oaUrl.host + (oaUrl.pathname === '/' - // ? '' - // : oaUrl.pathname)}/v1`; + constructor( + httpAPIUrl: string, + wsAPIUrl: string, + basicAuth?: BasicAuthCredentials + ) { + // const oaUrl = new URL(apiUrl); + // const oaWsProtocol = oaUrl.protocol === 'https:' ? 'wss' : 'ws'; + // const aggregatorWsUrl = `${oaWsProtocol}://${oaUrl.host + (oaUrl.pathname === '/' + // ? '' + // : oaUrl.pathname)}/v1`; - this.apiUrl = httpAPIUrl; - this.ws = new AggregatorWS(httpToWS(wsAPIUrl)); - this.basicAuth = basicAuth; + this.apiUrl = httpAPIUrl; + this.ws = new AggregatorWS(httpToWS(wsAPIUrl)); + this.basicAuth = basicAuth; - this.getHistoryAtomicSwaps = this.getHistoryAtomicSwaps.bind(this); - this.getPairConfig = this.getPairConfig.bind(this); - this.getPairConfigs = this.getPairConfigs.bind(this); - this.getPairsList = this.getPairsList.bind(this); - this.getSwapInfo = this.getSwapInfo.bind(this); + this.getHistoryAtomicSwaps = this.getHistoryAtomicSwaps.bind(this); + this.getPairConfig = this.getPairConfig.bind(this); + this.getPairConfigs = this.getPairConfigs.bind(this); + this.getPairsList = this.getPairsList.bind(this); + this.getSwapInfo = this.getSwapInfo.bind(this); this.getCrossChainAssetsByNetwork = this.getCrossChainAssetsByNetwork.bind(this); - this.getTradeProfits = this.getTradeProfits.bind(this); - this.placeAtomicSwap = this.placeAtomicSwap.bind(this); - this.placeOrder = this.placeOrder.bind(this); + this.getTradeProfits = this.getTradeProfits.bind(this); + this.placeAtomicSwap = this.placeAtomicSwap.bind(this); + this.placeOrder = this.placeOrder.bind(this); this.placeLockOrder = this.placeLockOrder.bind(this); - this.cancelOrder = this.cancelOrder.bind(this); - this.checkWhitelisted = this.checkWhitelisted.bind(this); - this.getLockedBalance = this.getLockedBalance.bind(this); - this.getAggregatedOrderbook = this.getAggregatedOrderbook.bind(this); - this.getExchangeOrderbook = this.getExchangeOrderbook.bind(this); - this.getPoolReserves = this.getPoolReserves.bind(this); - this.getVersion = this.getVersion.bind(this); - this.getPrices = this.getPrices.bind(this); + this.cancelOrder = this.cancelOrder.bind(this); + this.checkWhitelisted = this.checkWhitelisted.bind(this); + this.getLockedBalance = this.getLockedBalance.bind(this); + this.getAggregatedOrderbook = this.getAggregatedOrderbook.bind(this); + this.getExchangeOrderbook = this.getExchangeOrderbook.bind(this); + this.getPoolReserves = this.getPoolReserves.bind(this); + this.getVersion = this.getVersion.bind(this); + this.getPrices = this.getPrices.bind(this); + } + + get basicAuthHeaders() { + if (this.basicAuth) { + return { + Authorization: `Basic ${btoa(`${this.basicAuth.username}:${this.basicAuth.password}`)}`, + }; } + return {}; + } - get basicAuthHeaders() { - if (this.basicAuth) { - return { - Authorization: `Basic ${btoa(`${this.basicAuth.username}:${this.basicAuth.password}`)}`, - }; - } - return {}; + getOrder = (orderId: string, owner?: string) => { + if (!ethers.isHexString(orderId)) { + throw new Error(`Invalid order id: ${orderId}. Must be a hex string`); } - - getOrder = (orderId: string, owner?: string) => { - if (!ethers.isHexString(orderId)) { - throw new Error(`Invalid order id: ${orderId}. Must be a hex string`); - } - const url = new URL(`${this.apiUrl}/api/v1/order`); - url.searchParams.append('orderId', orderId); - if (owner !== undefined) { - if (!ethers.isAddress(owner)) { - throw new Error(`Invalid owner address: ${owner}`); - } - url.searchParams.append('owner', owner); - } - return fetchWithValidation( - url.toString(), - orderSchema, - {headers: this.basicAuthHeaders}, - errorSchema, - ); + const url = new URL(`${this.apiUrl}/api/v1/order`); + url.searchParams.append('orderId', orderId); + if (owner !== undefined) { + if (!ethers.isAddress(owner)) { + throw new Error(`Invalid owner address: ${owner}`); + } + url.searchParams.append('owner', owner); } - - getPairsList = (market: 'spot') => { - const url = new URL(`${this.apiUrl}/api/v1/pairs/list`); - url.searchParams.append('market', toUpperCase(market)); - - return fetchWithValidation( - url.toString(), - z.array(z.string().toUpperCase()), - {headers: this.basicAuthHeaders}, - ); - }; - - getAggregatedOrderbook = (pair: string, depth = 20) => { - const url = new URL(`${this.apiUrl}/api/v1/orderbook`); - url.searchParams.append('pair', pair); - url.searchParams.append('depth', depth.toString()); - return fetchWithValidation( - url.toString(), - aggregatedOrderbookSchema, - {headers: this.basicAuthHeaders}, - errorSchema, - ); - }; - - getAvailableExchanges = () => fetchWithValidation( - `${this.apiUrl}/api/v1/exchange/list`, - z.string().array(), + return fetchWithValidation( + url.toString(), + orderSchema, + { headers: this.basicAuthHeaders }, + errorSchema, ); + } - getExchangeOrderbook = ( - pair: string, - exchange: string, - depth = 20, - filterByBrokerBalances: boolean | null = null, - ) => { - const url = new URL(`${this.apiUrl}/api/v1/orderbook/${exchange}/${pair}`); - url.searchParams.append('pair', pair); - url.searchParams.append('depth', depth.toString()); - if (filterByBrokerBalances !== null) { - url.searchParams.append('filterByBrokerBalances', filterByBrokerBalances.toString()); - } - return fetchWithValidation( - url.toString(), - exchangeOrderbookSchema, - {headers: this.basicAuthHeaders}, - errorSchema, - ); - }; + getPairsList = (market: 'spot') => { + const url = new URL(`${this.apiUrl}/api/v1/pairs/list`); + url.searchParams.append('market', toUpperCase(market)); - getPairConfigs = (market: 'spot') => { - const url = new URL(`${this.apiUrl}/api/v1/pairs/exchangeInfo`); - url.searchParams.append('market', toUpperCase(market)); + return fetchWithValidation( + url.toString(), + z.array(z.string().toUpperCase()), + { headers: this.basicAuthHeaders }, + ); + }; - return fetchWithValidation( - url.toString(), - exchangeInfoSchema, - {headers: this.basicAuthHeaders}, - errorSchema, - ); + getAggregatedOrderbook = (pair: string, depth = 20) => { + const url = new URL(`${this.apiUrl}/api/v1/orderbook`); + url.searchParams.append('pair', pair); + url.searchParams.append('depth', depth.toString()); + return fetchWithValidation( + url.toString(), + aggregatedOrderbookSchema, + { headers: this.basicAuthHeaders }, + errorSchema, + ); + }; + + getAvailableExchanges = () => fetchWithValidation( + `${this.apiUrl}/api/v1/exchange/list`, + z.string().array(), + ); + + getExchangeOrderbook = ( + pair: string, + exchange: string, + depth = 20, + filterByBrokerBalances: boolean | null = null, + ) => { + const url = new URL(`${this.apiUrl}/api/v1/orderbook/${exchange}/${pair}`); + url.searchParams.append('pair', pair); + url.searchParams.append('depth', depth.toString()); + if (filterByBrokerBalances !== null) { + url.searchParams.append('filterByBrokerBalances', filterByBrokerBalances.toString()); } - - getPoolReserves = ( - pair: string, - exchange: string, - ) => { - const url = new URL(`${this.apiUrl}/api/v1/pools/reserves/${exchange}/${pair}`); - return fetchWithValidation( - url.toString(), - poolReservesSchema, - {headers: this.basicAuthHeaders}, - errorSchema, - ); - }; - - getVersion = () => fetchWithValidation( - `${this.apiUrl}/api/v1/version`, - z.object({ - serviceName: z.string(), - version: z.string(), - apiVersion: z.string(), - }), - {headers: this.basicAuthHeaders}, - errorSchema, + return fetchWithValidation( + url.toString(), + exchangeOrderbookSchema, + { headers: this.basicAuthHeaders }, + errorSchema, ); + }; - getPairConfig = (assetPair: string) => fetchWithValidation( - `${this.apiUrl}/api/v1/pairs/exchangeInfo/${assetPair}`, - pairConfigSchema, - {headers: this.basicAuthHeaders}, - errorSchema, + getPairConfigs = (market: 'spot') => { + const url = new URL(`${this.apiUrl}/api/v1/pairs/exchangeInfo`); + url.searchParams.append('market', toUpperCase(market)); + + return fetchWithValidation( + url.toString(), + exchangeInfoSchema, + { headers: this.basicAuthHeaders }, + errorSchema, ); + } - checkWhitelisted = (address: string) => fetchWithValidation( - `${this.apiUrl}/api/v1/whitelist/check?address=${address}`, - z.boolean(), - {headers: this.basicAuthHeaders}, - errorSchema, + getPoolReserves = ( + pair: string, + exchange: string, + ) => { + const url = new URL(`${this.apiUrl}/api/v1/pools/reserves/${exchange}/${pair}`); + return fetchWithValidation( + url.toString(), + poolReservesSchema, + { headers: this.basicAuthHeaders }, + errorSchema, ); + }; - placeOrder = ( - signedOrder: SignedOrder, - isCreateInternalOrder: boolean, - isReversedOrder?: boolean, - partnerId?: string, + getVersion = () => fetchWithValidation( + `${this.apiUrl}/api/v1/version`, + z.object({ + serviceName: z.string(), + version: z.string(), + apiVersion: z.string(), + }), + { headers: this.basicAuthHeaders }, + errorSchema, + ); + + getPairConfig = (assetPair: string) => fetchWithValidation( + `${this.apiUrl}/api/v1/pairs/exchangeInfo/${assetPair}`, + pairConfigSchema, + { headers: this.basicAuthHeaders }, + errorSchema, + ); + + checkWhitelisted = (address: string) => fetchWithValidation( + `${this.apiUrl}/api/v1/whitelist/check?address=${address}`, + z.boolean(), + { headers: this.basicAuthHeaders }, + errorSchema, + ); + + placeOrder = ( + signedOrder: SignedOrder, + isCreateInternalOrder: boolean, + isReversedOrder?: boolean, + partnerId?: string, source?: OrderSource, - rawExchangeRestrictions?: string | undefined, - ) => { - const headers = { - 'Content-Type': 'application/json', - Accept: 'application/json', - ...(isReversedOrder !== undefined) && { - 'X-Reverse-Order': isReversedOrder ? 'true' : 'false', - }, - ...(partnerId !== undefined) && {'X-Partner-Id': partnerId}, - ...(source !== undefined) && {'X-Source': source}, - ...this.basicAuthHeaders, - }; - - const url = new URL(`${this.apiUrl}/api/v1/order/${isCreateInternalOrder ? 'internal' : ''}`); - - return fetchWithValidation( - url.toString(), - z.object({ - orderId: z.string(), - placementRequests: z.array( - z.object({ - amount: z.number(), - brokerAddress: z.string(), - exchange: z.string(), - }), - ).optional(), - }), - { - headers, - method: 'POST', - body: JSON.stringify({...signedOrder, rawExchangeRestrictions}), - }, - errorSchema, - ); + rawExchangeRestrictions?: string | undefined, + ) => { + const headers = { + 'Content-Type': 'application/json', + Accept: 'application/json', + ...(isReversedOrder !== undefined) && { + 'X-Reverse-Order': isReversedOrder ? 'true' : 'false', + }, + ...(partnerId !== undefined) && { 'X-Partner-Id': partnerId }, + ...(source !== undefined) && { 'X-Source': source }, + ...this.basicAuthHeaders, }; + const url = new URL(`${this.apiUrl}/api/v1/order/${isCreateInternalOrder ? 'internal' : ''}`); + + return fetchWithValidation( + url.toString(), + z.object({ + orderId: z.string(), + placementRequests: z.array( + z.object({ + amount: z.number(), + brokerAddress: z.string(), + exchange: z.string(), + }), + ).optional(), + }), + { + headers, + method: 'POST', + body: JSON.stringify({ ...signedOrder, rawExchangeRestrictions }), + }, + errorSchema, + ); + }; + placeLockOrder = ( signedLockOrder: SignedLockOrder, - rawExchangeRestrictions?: string | undefined, ) => { const headers = { 'Content-Type': 'application/json', @@ -268,66 +267,66 @@ class Aggregator { { headers, method: 'POST', - body: JSON.stringify({ ...signedLockOrder, rawExchangeRestrictions }), + body: JSON.stringify(signedLockOrder), }, errorSchema, ); }; - cancelOrder = (signedCancelOrderRequest: SignedCancelOrderRequest) => fetchWithValidation( - `${this.apiUrl}/api/v1/order`, - cancelOrderSchema, - { - method: 'DELETE', - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - ...this.basicAuthHeaders, - }, - body: JSON.stringify({ - ...signedCancelOrderRequest, - sender: signedCancelOrderRequest.senderAddress, - }), - }, - errorSchema, + cancelOrder = (signedCancelOrderRequest: SignedCancelOrderRequest) => fetchWithValidation( + `${this.apiUrl}/api/v1/order`, + cancelOrderSchema, + { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + ...this.basicAuthHeaders, + }, + body: JSON.stringify({ + ...signedCancelOrderRequest, + sender: signedCancelOrderRequest.senderAddress, + }), + }, + errorSchema, + ); + + getSwapInfo = ( + type: 'exactSpend' | 'exactReceive', + assetIn: string, + assetOut: string, + amount: string, + instantSettlement?: boolean, + exchanges?: string[] | 'cex' | 'pools', + ) => { + const url = new URL(`${this.apiUrl}/api/v1/swap`); + url.searchParams.append('assetIn', assetIn); + url.searchParams.append('assetOut', assetOut); + if (type === 'exactSpend') { + url.searchParams.append('amountIn', amount); + } else { + url.searchParams.append('amountOut', amount); + } + if (exchanges !== undefined) { + if (Array.isArray(exchanges)) { + exchanges.forEach((exchange) => { + url.searchParams.append('exchanges', exchange); + }); + } else { + url.searchParams.append('exchanges', exchanges); + } + } + if (instantSettlement !== undefined && instantSettlement) { + url.searchParams.append('instantSettlement', 'true'); + } + + return fetchWithValidation( + url.toString(), + swapInfoSchema, + { headers: this.basicAuthHeaders }, + errorSchema, ); - - getSwapInfo = ( - type: 'exactSpend' | 'exactReceive', - assetIn: string, - assetOut: string, - amount: string, - instantSettlement?: boolean, - exchanges?: string[] | 'cex' | 'pools', - ) => { - const url = new URL(`${this.apiUrl}/api/v1/swap`); - url.searchParams.append('assetIn', assetIn); - url.searchParams.append('assetOut', assetOut); - if (type === 'exactSpend') { - url.searchParams.append('amountIn', amount); - } else { - url.searchParams.append('amountOut', amount); - } - if (exchanges !== undefined) { - if (Array.isArray(exchanges)) { - exchanges.forEach((exchange) => { - url.searchParams.append('exchanges', exchange); - }); - } else { - url.searchParams.append('exchanges', exchanges); - } - } - if (instantSettlement !== undefined && instantSettlement) { - url.searchParams.append('instantSettlement', 'true'); - } - - return fetchWithValidation( - url.toString(), - swapInfoSchema, - {headers: this.basicAuthHeaders}, - errorSchema, - ); - }; + }; getCrossChainAssetsByNetwork = (sourceChain: NetworkShortName) => { const url = new URL(`${this.apiUrl}/api/v1/cross-chain/assets`); @@ -341,90 +340,90 @@ class Aggregator { ) } - getPrices = (assetPair: string, includePools: boolean) => { - const url = new URL(`${this.apiUrl}/api/v1/prices/`); - url.searchParams.append('assetPair', assetPair); - url.searchParams.append('includePools', includePools.toString()); - return fetchWithValidation( - url.toString(), - z.number(), - {headers: this.basicAuthHeaders}, - errorSchema, - ); - }; + getPrices = (assetPair: string, includePools: boolean) => { + const url = new URL(`${this.apiUrl}/api/v1/prices/`); + url.searchParams.append('assetPair', assetPair); + url.searchParams.append('includePools', includePools.toString()); + return fetchWithValidation( + url.toString(), + z.number(), + { headers: this.basicAuthHeaders }, + errorSchema, + ); + }; - getLockedBalance = (address: string, currency: string) => { - const url = new URL(`${this.apiUrl}/api/v1/address/balance/reserved/${currency}`); - url.searchParams.append('address', address); - return fetchWithValidation( - url.toString(), - z.object({ - [currency]: z.number(), - }).partial(), - {headers: this.basicAuthHeaders}, - errorSchema, - ); - }; + getLockedBalance = (address: string, currency: string) => { + const url = new URL(`${this.apiUrl}/api/v1/address/balance/reserved/${currency}`); + url.searchParams.append('address', address); + return fetchWithValidation( + url.toString(), + z.object({ + [currency]: z.number(), + }).partial(), + { headers: this.basicAuthHeaders }, + errorSchema, + ); + }; - getTradeProfits = ( - symbol: string, - amount: BigNumber, - isBuy: boolean, - ) => { - const url = new URL(`${this.apiUrl}/api/v1/orderBenefits`); - url.searchParams.append('symbol', symbol); - url.searchParams.append('amount', amount.toString()); - url.searchParams.append('side', isBuy ? 'buy' : 'sell'); + getTradeProfits = ( + symbol: string, + amount: BigNumber, + isBuy: boolean, + ) => { + const url = new URL(`${this.apiUrl}/api/v1/orderBenefits`); + url.searchParams.append('symbol', symbol); + url.searchParams.append('amount', amount.toString()); + url.searchParams.append('side', isBuy ? 'buy' : 'sell'); - return fetchWithValidation( - url.toString(), - orderBenefitsSchema, - {headers: this.basicAuthHeaders}, - errorSchema, - ); - }; + return fetchWithValidation( + url.toString(), + orderBenefitsSchema, + { headers: this.basicAuthHeaders }, + errorSchema, + ); + }; - /** + /** * Placing atomic swap. Placement must take place on the target chain. * @param secretHash Secret hash * @param sourceNetworkCode uppercase, e.g. BSC, ETH * @returns Fetch promise */ - placeAtomicSwap = ( - secretHash: string, + placeAtomicSwap = ( + secretHash: string, sourceNetworkCode: NetworkShortName, - ) => fetchWithValidation( - `${this.apiUrl}/api/v1/atomic-swap`, - placeAtomicSwapSchema, - { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - ...this.basicAuthHeaders, - }, - method: 'POST', - body: JSON.stringify({ - secretHash, - sourceNetworkCode, - }), - }, - errorSchema, - ); + ) => fetchWithValidation( + `${this.apiUrl}/api/v1/atomic-swap`, + placeAtomicSwapSchema, + { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + ...this.basicAuthHeaders, + }, + method: 'POST', + body: JSON.stringify({ + secretHash, + sourceNetworkCode, + }), + }, + errorSchema, + ); - /** + /** * Get placed atomic swaps. Each atomic swap received from this list has a target chain corresponding to this Aggregator * @param sender Sender address - * @param limit + * @param limit * @returns Fetch promise */ - getHistoryAtomicSwaps = (sender: string, limit = 1000) => { - const url = new URL(`${this.apiUrl}/api/v1/atomic-swap/history/all`); - url.searchParams.append('sender', sender); - url.searchParams.append('limit', limit.toString()); - return fetchWithValidation(url.toString(), atomicSwapHistorySchema, {headers: this.basicAuthHeaders}); - }; + getHistoryAtomicSwaps = (sender: string, limit = 1000) => { + const url = new URL(`${this.apiUrl}/api/v1/atomic-swap/history/all`); + url.searchParams.append('sender', sender); + url.searchParams.append('limit', limit.toString()); + return fetchWithValidation(url.toString(), atomicSwapHistorySchema, { headers: this.basicAuthHeaders }); + }; } export * as schemas from './schemas/index.js'; export * as ws from './ws/index.js'; -export {Aggregator}; +export { Aggregator };