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
38 changes: 30 additions & 8 deletions dexs/aden/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,30 +13,52 @@ interface DailyStats {
activeUser: number;
}

const fetch = async (_t: number, _: any, { startOfDay }: FetchOptions) => {
const getAdenDailyVolumeFromOrderly = async (startOfDay: number) => {
const dailyStats: DailyStats[] = await httpGet(
"https://api.orderly.org/md/volume/builder/daily_stats?broker_id=aden"
);

const targetDate = new Date(startOfDay * 1000).toISOString().split("T")[0];
const dayStats = dailyStats.find((day) =>
day.date.startsWith(targetDate)
);
const dayStats = dailyStats.find((day) => day.date.startsWith(targetDate));
if (!dayStats) {
throw new Error(`No stats found for date: ${targetDate}`);
}

const dailyVolume = parseFloat(dayStats.takerVolume || "0");
return parseFloat(dayStats.takerVolume || "0");
};

const getAdenDailyVolumeFromAster = async () => {
const response = await httpGet(
"https://www.asterdex.com/fapi/v1/aden/ticker/24hr"
);

return response.reduce(
(acc: number, c: { quoteVolume: string }) =>
acc + parseFloat(c.quoteVolume),
0
);
};

const fetch = async (_t: number, _: any, { startOfDay }: FetchOptions) => {
const responses = await Promise.all([
getAdenDailyVolumeFromOrderly(startOfDay),
getAdenDailyVolumeFromAster(),
]);

return { dailyVolume };
return {
dailyVolume: responses.reduce(
(acc: number, dailyVolume) => acc + dailyVolume,
0
),
};
};

const adapter: SimpleAdapter = {
fetch,
// ADEN operates on Solana, Arbitrum, and BNB Chain through Orderly Network
// Using BNB Chain as the main chain since the API aggregates all chains data
chains: [CHAIN.BSC],
start: '2025-07-23',
start: "2025-07-23",
};

export default adapter;
export default adapter;
67 changes: 54 additions & 13 deletions fees/aden/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,38 +12,79 @@ interface DailyStats {
builderFee: string;
}

const fetch = async (_t: number, _: any, { startOfDay }: FetchOptions) => {
const getAdenDailyFeesFromOrderly = async (startOfDay: number) => {
const dailyStats: DailyStats[] = await httpGet(
"https://api.orderly.org/md/volume/builder/daily_stats?broker_id=aden"
);

const targetDate = new Date(startOfDay * 1000).toISOString().split("T")[0];
const dayStats = dailyStats.find((day) =>
day.date.startsWith(targetDate)
);
const dayStats = dailyStats.find((day) => day.date.startsWith(targetDate));

const dailyFees = dayStats ? parseFloat(dayStats.builderFee || "0") : 0;

return {
dailyFees: dailyFees,
dailyRevenue: dailyFees,
dailyProtocolRevenue: dailyFees,
};
};

const getAdenDailyFeesFromAster = async (startOfDay: number) => {
const response = (await httpGet(
"https://www.asterdex.com/bapi/futures/v1/public/future/volume/builder/daily_stats/aden"
)) as {
data: DailyStats[];
};

const targetDate = new Date(startOfDay * 1000).toISOString().split("T")[0];
const dayStats = response.data.find((day) => day.date.startsWith(targetDate));
const dailyFees = dayStats ? parseFloat(dayStats.builderFee || "0") : 0;

return {
dailyFees: dailyFees.toString(),
dailyRevenue: dailyFees.toString(),
dailyProtocolRevenue: dailyFees.toString(),
dailyFees: dailyFees,
dailyRevenue: dailyFees,
dailyProtocolRevenue: dailyFees,
};
};

const fetch = async (_t: number, _: any, { startOfDay }: FetchOptions) => {
const responses = await Promise.all([
getAdenDailyFeesFromOrderly(startOfDay),
getAdenDailyFeesFromAster(startOfDay),
]);

const totalFees = responses.reduce(
(acc, curr) => {
acc.dailyFees += curr.dailyFees;
acc.dailyRevenue += curr.dailyRevenue;
acc.dailyProtocolRevenue += curr.dailyProtocolRevenue;
return acc;
},
{ dailyFees: 0, dailyRevenue: 0, dailyProtocolRevenue: 0 }
);

return {
dailyFees: totalFees.dailyFees.toString(),
dailyRevenue: totalFees.dailyProtocolRevenue.toString(),
dailyProtocolRevenue: totalFees.dailyProtocolRevenue.toString(),
};
};

const methodology = {
Fees: "(Builder Fees collected from Orderly Network(0.3 bps on taker volume).",
Revenue: "0.3 bps trading fees on taker volume, 0 on maker volume",
ProtocolRevenue: "0.3 bps trading fees on taker volume as builder fee from orderly network",
}
Fees: "(Builder Fees collected from both AsterDEX (0.4bps on taker volume) and Orderly Network(0.3 bps on taker volume).",
Revenue:
"For AsterDEX, 0.4 bps trading fees on taker volume, 0 on maker volume; For Orderly Network, 0.3 bps trading fees on taker volume, 0 on maker volume",
ProtocolRevenue:
"0.4 bps trading fees on taker volume as builder fee from AsterDEX, while 0.3 bps trading fees on taker volume as builder fee from orderly network",
};

const adapter: SimpleAdapter = {
fetch,
// ADEN operates on Solana, Arbitrum, and BNB Chain through Orderly Network
// Using BNB Chain as the main chain since the API aggregates all chains data
chains: [CHAIN.BSC],
start: '2025-07-23',
start: "2025-07-23",
methodology,
};

export default adapter;
export default adapter;
Loading