Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion adapters/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -243,4 +243,4 @@ export interface IJSON<T> {
[key: string]: T
}

export const ADAPTER_TYPES = Object.values(AdapterType).filter((adapterType: any) => adapterType !== AdapterType.PROTOCOLS)
export const ADAPTER_TYPES = Object.values(AdapterType).filter((adapterType: any) => adapterType !== AdapterType.PROTOCOLS)
20 changes: 14 additions & 6 deletions adapters/utils/runAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { getUniqStartOfTodayTimestamp } from '../../helpers/getUniSubgraphVolume
import { getDateString } from '../../helpers/utils';
import { accumulativeKeySet, BaseAdapter, BaseAdapterChainConfig, ChainBlocks, FetchGetLogsOptions, FetchOptions, FetchResponseValue, FetchV2, SimpleAdapter } from '../types';
import { CHAIN } from '../../helpers/chains';
import { getAdapterTimeWindow, getLogStartBlock } from './timeWindow';

// to trigger inclusion of the env.ts file
const _include_env = _env.getEnv('BITLAYER_RPC')
Expand Down Expand Up @@ -354,9 +355,18 @@ async function _runAdapter({
}
return new Balances({ timestamp: closeToCurrentTime ? undefined : timestamp, chain: _chain })
}
const toTimestamp = timestamp - 1
const fromTimestamp = toTimestamp - windowSize
const {
startTimestamp,
endTimestamp,
fromTimestamp,
toTimestamp,
} = getAdapterTimeWindow(timestamp, windowSize)
// Cumulative snapshots use the pre-window block; log ranges start after it when available.
const getFromBlock = async () => await getBlock(fromTimestamp, chain)
const getQueryStartBlock = async () => {
const snapshotBlock = await getFromBlock()
return getLogStartBlock(snapshotBlock)
}
const getToBlock = async () => await getBlock(toTimestamp, chain, chainBlocks)
const problematicChains = new Set(['sei',])

Expand All @@ -365,7 +375,7 @@ async function _runAdapter({

if (problematicChains.has(chain)) throw new Error(`getLogs is disabled for ${chain} chain due to frequent timeouts`)

fromBlock = fromBlock ?? await getFromBlock()
fromBlock = fromBlock ?? await getQueryStartBlock()
toBlock = toBlock ?? await getToBlock()
const requestCount = targets ? targets.length : 1
if (api) api.addStat('logsRequests', requestCount)
Expand All @@ -389,7 +399,7 @@ async function _runAdapter({
if (Array.isArray(targetsFilter))
targetsFilter = new Set(targetsFilter.map((t) => t.toLowerCase()))

if (!params.hasOwnProperty('fromBlock')) params.fromBlock = await getFromBlock()
if (!params.hasOwnProperty('fromBlock')) params.fromBlock = await getQueryStartBlock()
if (!params.hasOwnProperty('toBlock')) params.toBlock = await getToBlock()
if (!params.hasOwnProperty('all')) params.all = true
if (!params.hasOwnProperty('clientStreaming')) params.clientStreaming = true
Expand Down Expand Up @@ -424,8 +434,6 @@ async function _runAdapter({
const fromApi = new ChainApi({ chain, timestamp: fromTimestamp, block: fromBlock })
const api = new ChainApi({ chain, timestamp: withinTwoHours ? undefined : timestamp, block: toBlock })
const startOfDay = getUniqStartOfTodayTimestamp(new Date(toTimestamp * 1000))
const startTimestamp = fromTimestamp
const endTimestamp = toTimestamp + 1
const getStartBlock = getFromBlock
const getEndBlock = getToBlock
const toApi = api
Expand Down
29 changes: 29 additions & 0 deletions adapters/utils/timeWindow.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
export type AdapterTimeWindow = {
startTimestamp: number;
endTimestamp: number;
fromTimestamp: number;
toTimestamp: number;
};

export function getLogStartBlock<T extends number | null | undefined>(snapshotBlock: T): T extends number ? number : T {
return (snapshotBlock == null ? snapshotBlock : snapshotBlock + 1) as T extends number ? number : T;
}

export function getAdapterTimeWindow(
endTimestamp: number,
windowSize: number,
): AdapterTimeWindow {
if (!Number.isInteger(endTimestamp))
throw new Error(`endTimestamp must be an integer, got ${endTimestamp}`);
if (!Number.isInteger(windowSize) || windowSize <= 0)
throw new Error(`windowSize must be a positive integer, got ${windowSize}`);

const startTimestamp = endTimestamp - windowSize;

return {
startTimestamp,
endTimestamp,
fromTimestamp: startTimestamp - 1,
toTimestamp: endTimestamp - 1,
};
}
6 changes: 3 additions & 3 deletions aggregator-derivatives/flat-money/helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ function sleep(ms) {
export const leverageOpensQuery = gql`
query leverageOpens($startTimestamp: BigInt!, $endTimestamp: BigInt!) {
leverageOpens(
where: { blockTimestamp_gte: $startTimestamp, blockTimestamp_lte: $endTimestamp },
where: { blockTimestamp_gte: $startTimestamp, blockTimestamp_lt: $endTimestamp },
first: 1000, orderBy: blockTimestamp, orderDirection: asc
) {
margin,
Expand All @@ -102,7 +102,7 @@ export const leverageOpensQuery = gql`
export const leverageAdjustsQuery = gql`
query leverageAdjusts($startTimestamp: BigInt!, $endTimestamp: BigInt!) {
leverageAdjusts(
where: { blockTimestamp_gte: $startTimestamp, blockTimestamp_lte: $endTimestamp },
where: { blockTimestamp_gte: $startTimestamp, blockTimestamp_lt: $endTimestamp },
first: 1000, orderBy: blockTimestamp, orderDirection: asc
) {
marginDelta,
Expand All @@ -114,7 +114,7 @@ export const leverageAdjustsQuery = gql`
export const leverageClosesQuery = gql`
query leverageCloses($startTimestamp: BigInt!, $endTimestamp: BigInt!) {
leverageCloses(
where: { blockTimestamp_gte: $startTimestamp, blockTimestamp_lte: $endTimestamp },
where: { blockTimestamp_gte: $startTimestamp, blockTimestamp_lt: $endTimestamp },
first: 1000, orderBy: blockTimestamp, orderDirection: asc
) {
settledMargin,
Expand Down
4 changes: 2 additions & 2 deletions aggregators/anqa/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ const fetch = async (options: FetchOptions): Promise<FetchResult> => {
1082197246,1082197771,1082189106,1082188929
)
AND e.tx_success = TRUE
AND e.block_date >= from_unixtime(${options.startTimestamp})
AND e.block_date <= from_unixtime(${options.endTimestamp})
AND e.block_time >= from_unixtime(${options.startTimestamp})
AND e.block_time < from_unixtime(${options.endTimestamp})
)
SELECT
SUM(tx_value_usd) AS total_volume
Expand Down
6 changes: 3 additions & 3 deletions aggregators/opensea/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ const prefetch = async (options: FetchOptions) => {
SELECT DISTINCT hash FROM evms.transactions
WHERE
block_time >= FROM_UNIXTIME(${options.startTimestamp})
AND block_time <= FROM_UNIXTIME(${options.endTimestamp})
AND block_time < FROM_UNIXTIME(${options.endTimestamp})
AND varbinary_substring(data, varbinary_length(data) - 3, 4) = from_hex('865d8597')
)
GROUP BY 1
Expand All @@ -48,7 +48,7 @@ const fetchRobinhood = async (options: FetchOptions) => {
FROM evms.transactions
WHERE blockchain = 'robinhood'
AND block_time >= FROM_UNIXTIME(${options.startTimestamp})
AND block_time <= FROM_UNIXTIME(${options.endTimestamp})
AND block_time < FROM_UNIXTIME(${options.endTimestamp})
AND varbinary_substring(data, varbinary_length(data) - 3, 4) = from_hex('865d8597')
),
robinhood_trades AS (
Expand All @@ -61,7 +61,7 @@ const fetchRobinhood = async (options: FetchOptions) => {
INNER JOIN opensea_txs os ON t.tx_hash = os.hash
WHERE t.blockchain = 'robinhood'
AND t.block_time >= FROM_UNIXTIME(${options.startTimestamp})
AND t.block_time <= FROM_UNIXTIME(${options.endTimestamp})
AND t.block_time < FROM_UNIXTIME(${options.endTimestamp})
)
SELECT SUM(t.amount_usd) AS dailyVolume
FROM robinhood_trades t
Expand Down
4 changes: 2 additions & 2 deletions bridge-aggregators/garden/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -200,10 +200,10 @@ async function fetchTransactionsInDateRange(startTimestamp: number, endTimestamp
}
for (const tx of response.result.data) {
const txTimestamp = new Date(tx.created_at).getTime() / 1000;
if (!insideDateRange && txTimestamp > endTimestamp) {
if (!insideDateRange && txTimestamp >= endTimestamp) {
continue;
}
if (txTimestamp <= endTimestamp && txTimestamp >= startTimestamp) {
if (txTimestamp < endTimestamp && txTimestamp >= startTimestamp) {
if (!insideDateRange) {
insideDateRange = true;
}
Expand Down
8 changes: 4 additions & 4 deletions bridge-aggregators/opensea/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,21 @@ const prefetch = async (options: FetchOptions) => {
FROM evms.transactions tx
WHERE varbinary_substring(tx.data, varbinary_length(tx.data) - 3, 4) = from_hex('865d8597')
AND tx.block_time >= FROM_UNIXTIME(${options.startTimestamp})
AND tx.block_time <= FROM_UNIXTIME(${options.endTimestamp})
AND tx.block_time < FROM_UNIXTIME(${options.endTimestamp})
),
dex_txs AS (
SELECT tx_hash, blockchain
FROM dex_aggregator.trades
WHERE block_time >= FROM_UNIXTIME(${options.startTimestamp})
AND block_time <= FROM_UNIXTIME(${options.endTimestamp})
AND block_time < FROM_UNIXTIME(${options.endTimestamp})

UNION ALL

SELECT tx_hash, blockchain
FROM dex.trades
WHERE blockchain = 'robinhood'
AND block_time >= FROM_UNIXTIME(${options.startTimestamp})
AND block_time <= FROM_UNIXTIME(${options.endTimestamp})
AND block_time < FROM_UNIXTIME(${options.endTimestamp})
),
filtered_bridge_txs AS (
SELECT os.hash, os.blockchain
Expand All @@ -62,7 +62,7 @@ const prefetch = async (options: FetchOptions) => {
INNER JOIN filtered_bridge_txs fb
ON t.tx_hash = fb.hash AND t.blockchain = fb.blockchain
WHERE t.block_time >= FROM_UNIXTIME(${options.startTimestamp})
AND t.block_time <= FROM_UNIXTIME(${options.endTimestamp})
AND t.block_time < FROM_UNIXTIME(${options.endTimestamp})
GROUP BY 1
`);
};
Expand Down
2 changes: 1 addition & 1 deletion dexs/0x-rfq.ts
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ const prefetch = async (options: FetchOptions) => {
AND p.contract_address = m.token
AND p.timestamp = m.fill_day
AND p.timestamp >= DATE_TRUNC('day', from_unixtime(${options.startTimestamp}))
AND p.timestamp <= DATE_TRUNC('day', from_unixtime(${options.endTimestamp}))
AND p.timestamp <= DATE_TRUNC('day', from_unixtime(${options.toTimestamp}))
)`,
select: `
SELECT '${chain}' AS chain, COALESCE(SUM(volume_usd), 0) AS daily_volume
Expand Down
2 changes: 1 addition & 1 deletion dexs/alphaq/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const fetch = async (options: FetchOptions) => {
and t.outer_instruction_index = s.outer_instruction_index
and t.inner_instruction_index = s.inner_instruction_index + 1
where t.block_time >= from_unixtime(${options.startTimestamp})
and t.block_time <= from_unixtime(${options.endTimestamp})
and t.block_time < from_unixtime(${options.endTimestamp})
`
const data = await queryDuneSql(options, query)
const dailyVolume = data[0]?.daily_volume ?? 0
Expand Down
2 changes: 1 addition & 1 deletion dexs/bisonfi/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const fetch = async (options: FetchOptions) => {
and t.outer_instruction_index = s.outer_instruction_index
and t.inner_instruction_index = s.inner_instruction_index + 1
where t.block_time >= from_unixtime(${options.startTimestamp})
and t.block_time <= from_unixtime(${options.endTimestamp})
and t.block_time < from_unixtime(${options.endTimestamp})
`;
const data = await queryDuneSql(options, query);

Expand Down
4 changes: 2 additions & 2 deletions dexs/boop-fun/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const fetch = async (options: FetchOptions) => {
boopdotfun_solana.boop_call_buy_token
WHERE
call_block_time >= from_unixtime(${options.startTimestamp})
and call_block_time <= from_unixtime(${options.endTimestamp})
and call_block_time < from_unixtime(${options.endTimestamp})
),
sell_volume AS (
SELECT
Expand All @@ -25,7 +25,7 @@ const fetch = async (options: FetchOptions) => {
boopdotfun_solana.boop_call_sell_token
WHERE
call_block_time >= from_unixtime(${options.startTimestamp})
and call_block_time <= from_unixtime(${options.endTimestamp})
and call_block_time < from_unixtime(${options.endTimestamp})
)
SELECT
COALESCE((SELECT volume FROM buy_volume), 0) + COALESCE((SELECT volume FROM sell_volume), 0) AS total_volume
Expand Down
2 changes: 1 addition & 1 deletion dexs/deriverse/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ const fetch = async (options: FetchOptions) => {
return fetchRangeVolume(options, bucketStartTimestamp);
}

const matchesWindowStart = bucketStartTimestamp === options.startTimestamp || bucketStartTimestamp === options.startTimestamp + 1;
const matchesWindowStart = bucketStartTimestamp === options.startTimestamp;
if (!matchesWindowStart || bucketStartTimestamp % DAY_SECONDS !== 0) {
return { dailyVolume: 0 };
}
Expand Down
2 changes: 1 addition & 1 deletion dexs/dexswap/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const fetch = async (options: FetchOptions) => {
while (true) {
const dataFees = await request(endpoints[options.chain], gql
`query DexSwapFees {
dexSwapFees(first: 1000,skip: ${skip}, orderBy: timestamp, where: { timestamp_gt: ${date}, timestamp_lte: ${options.endTimestamp} }) {
dexSwapFees(first: 1000,skip: ${skip}, orderBy: timestamp, where: { timestamp_gt: ${date}, timestamp_lt: ${options.endTimestamp} }) {
volume,
timestamp
}
Expand Down
2 changes: 1 addition & 1 deletion dexs/flowx-v3/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ const fetch = async (options: FetchOptions): Promise<FetchResultV2> => {
FROM sui.events
WHERE event_type = '${SWAP_EVENT}'
AND date >= from_unixtime(${options.startTimestamp})
AND date <= from_unixtime(${options.endTimestamp})
AND date <= from_unixtime(${options.toTimestamp})
AND timestamp_ms >= ${options.startTimestamp * 1000}
AND timestamp_ms < ${options.endTimestamp * 1000}
GROUP BY 1
Expand Down
8 changes: 4 additions & 4 deletions dexs/heaven-dex/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const fetch: any = async (options: FetchOptions) => {
account_arguments[7] as token_address
FROM solana.instruction_calls
WHERE block_time >= from_unixtime(${options.startTimestamp})
AND block_time <= from_unixtime(${options.endTimestamp})
AND block_time < from_unixtime(${options.endTimestamp})
AND executing_account = 'HEAVENoP2qxoeuF8Dj2oT1GHEnu49U5mJYkdeC8BAX2o'
AND outer_executing_account = 'HEAVENoP2qxoeuF8Dj2oT1GHEnu49U5mJYkdeC8BAX2o'
AND bytearray_substring(data, 1, 4) = 0x66063d12
Expand All @@ -38,7 +38,7 @@ const fetch: any = async (options: FetchOptions) => {
outer_instruction_index
FROM solana.instruction_calls
WHERE block_time >= from_unixtime(${options.startTimestamp})
AND block_time <= from_unixtime(${options.endTimestamp})
AND block_time < from_unixtime(${options.endTimestamp})
AND executing_account = 'HEAVENoP2qxoeuF8Dj2oT1GHEnu49U5mJYkdeC8BAX2o'
AND outer_executing_account = 'HEAVENoP2qxoeuF8Dj2oT1GHEnu49U5mJYkdeC8BAX2o'
AND bytearray_substring(data, 1, 4) = 0x33e685a4
Expand All @@ -59,7 +59,7 @@ const fetch: any = async (options: FetchOptions) => {
FROM solana.instruction_calls ic
join sell_main_instructions mi on ic.tx_id = mi.tx_id and ic.outer_instruction_index = mi.outer_instruction_index
WHERE ic.block_time >= from_unixtime(${options.startTimestamp})
AND ic.block_time <= from_unixtime(${options.endTimestamp})
AND ic.block_time < from_unixtime(${options.endTimestamp})
AND ic.executing_account = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'
AND ic.outer_executing_account = 'HEAVENoP2qxoeuF8Dj2oT1GHEnu49U5mJYkdeC8BAX2o'
AND bytearray_substring(ic.data, 1, 1) = 0x0c
Expand All @@ -76,7 +76,7 @@ const fetch: any = async (options: FetchOptions) => {
from prices.usd
where contract_address = FROM_BASE58('So11111111111111111111111111111111111111112')
and minute >= from_unixtime(${options.startTimestamp})
and minute <= from_unixtime(${options.endTimestamp})
and minute < from_unixtime(${options.endTimestamp})
),
txs as (
SELECT
Expand Down
2 changes: 1 addition & 1 deletion dexs/humidifi/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const fetch = async (options: FetchOptions) => {
and t.outer_instruction_index = s.outer_instruction_index
and t.inner_instruction_index = s.inner_instruction_index + 1
where t.block_time >= from_unixtime(${options.startTimestamp})
and t.block_time <= from_unixtime(${options.endTimestamp})
and t.block_time < from_unixtime(${options.endTimestamp})
`
const data = await queryDuneSql(options, query)

Expand Down
3 changes: 1 addition & 2 deletions dexs/lab-terminal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ const fetch: any = async (options: FetchOptions) => {
FROM
dune.lab_terminal.historical_aggregates_v3
WHERE
snapshot_date >= CAST(from_unixtime(${options.startTimestamp}) AS DATE)
AND snapshot_date <= CAST(from_unixtime(${options.endTimestamp}) AS DATE)
snapshot_date = CAST(from_unixtime(${options.toTimestamp}) AS DATE)
LIMIT 1
`;

Expand Down
2 changes: 1 addition & 1 deletion dexs/orbit-finance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ const fetch = async (options: FetchOptions) => {
ON t.tx_id = s.tx_id
AND t.outer_instruction_index = s.outer_instruction_index
WHERE t.block_time >= from_unixtime(${options.startTimestamp})
AND t.block_time <= from_unixtime(${options.endTimestamp})
AND t.block_time < from_unixtime(${options.endTimestamp})
AND t.amount_usd IS NOT NULL
AND t.amount_usd > 0
),
Expand Down
2 changes: 1 addition & 1 deletion dexs/orca-wavebreak.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const fetch: any = async (options: FetchOptions) => {
FROM solana.instruction_calls
WHERE executing_account = 'waveQX2yP3H1pVU8djGvEHmYg8uamQ84AuyGtpsrXTF'
AND block_time >= from_unixtime(${options.startTimestamp})
AND block_time <= from_unixtime(${options.endTimestamp})
AND block_time < from_unixtime(${options.endTimestamp})
AND tx_success = true
AND (
bytearray_substring(data, 1, 1) = from_hex('08') OR -- TokenBuyExactIn
Expand Down
4 changes: 2 additions & 2 deletions dexs/ostium/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ const fetch = async (options: FetchOptions) => {
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
) AS open_interest
FROM orders
WHERE executed_at <= from_unixtime(${options.endTimestamp})
WHERE executed_at < from_unixtime(${options.endTimestamp})
GROUP BY 1, is_buy
),
latest_oi_per_side AS (
Expand All @@ -46,7 +46,7 @@ const fetch = async (options: FetchOptions) => {
open_interest,
row_number() OVER (PARTITION BY is_buy ORDER BY day DESC) AS rn
FROM oi_daily
WHERE day <= from_unixtime(${options.endTimestamp})
WHERE day < from_unixtime(${options.endTimestamp})
)
WHERE rn = 1
),
Expand Down
2 changes: 1 addition & 1 deletion dexs/paradex-spot/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ async function fetchMarkets() {
async function fetchCandles(options: FetchOptions, marketId: string) {
try {
const { startTimestamp, endTimestamp, startOfDay } = options;
const klineUrl = `${API_URL}/tradingview/history?symbol=${marketId}&resolution=1D&from=${startTimestamp + 1}&to=${endTimestamp}&countback=330&price_kind=mark&request_source=paradex-ui`;
const klineUrl = `${API_URL}/tradingview/history?symbol=${marketId}&resolution=1D&from=${startTimestamp}&to=${endTimestamp}&countback=330&price_kind=mark&request_source=paradex-ui`;
const klineRes: { t?: number[], v?: number[] } = await fetchURL(klineUrl);

if (!klineRes?.t || !klineRes?.v || !Array.isArray(klineRes.t) || !Array.isArray(klineRes.v)) {
Expand Down
2 changes: 1 addition & 1 deletion dexs/pendle/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ const fetch = async (options: FetchOptions): Promise<FetchResultV2> => {
// a market can only trade between its deployment and its expiry
const markets = (await getAllMarkets(chains[options.chain].id)).filter(
(market) =>
new Date(market.timestamp).getTime() / 1000 <= options.endTimestamp &&
new Date(market.timestamp).getTime() / 1000 < options.endTimestamp &&
new Date(market.expiry).getTime() / 1000 > options.startTimestamp
);
if (!markets.length) return { dailyVolume };
Expand Down
2 changes: 1 addition & 1 deletion dexs/pumpfun.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const fetch: any = async (options: FetchOptions) => {
FROM dex_solana.trades
WHERE project = 'pumpdotfun'
AND block_time >= from_unixtime(${options.startTimestamp})
AND block_time <= from_unixtime(${options.endTimestamp})
AND block_time < from_unixtime(${options.endTimestamp})
`);

const dailyVolume = options.createBalances()
Expand Down
Loading
Loading