Skip to content

Commit a570d8b

Browse files
committed
refacotr
1 parent 1f79ec4 commit a570d8b

File tree

1 file changed

+98
-97
lines changed

1 file changed

+98
-97
lines changed

fees/collector-crypt/index.ts

Lines changed: 98 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -2,111 +2,112 @@ import { SimpleAdapter, FetchOptions, Dependencies } from "../../adapters/types"
22
import { CHAIN } from "../../helpers/chains";
33
import { queryDuneSql } from "../../helpers/dune";
44

5-
const fetch = async (_a:any, _b:any, options: FetchOptions) => {
6-
const dailyFees = options.createBalances();
7-
8-
const query = `
9-
WITH gacha_in AS (
10-
SELECT
11-
SUM(amount / POWER(10, 6)) AS inflow
12-
FROM tokens_solana.transfers
13-
WHERE to_owner IN ('GachazZscHZ5bn3vnq1yEC4zpYdhAYJBzuKJwSJksc9z','GachaNgyXTU3zFogQ8Z5jR2BLXs8215X2AtEH18VxJq3','96DULv1BqYfe5wyMr6pVUNC6Uyrtj6yr3tNi6VtfwW9s')
14-
AND from_owner NOT IN ('BAxTk97HsaJqbnbFmTiQTaL4KSRvJ8Y65ArZCsP6vA5M',
15-
'21KhtC7y2JGYvwc8dcGqTdbrudbM8fgMPJsVwxRQqdY8',
16-
'DFEstpYN3fsz93AC9v2ujzPPngPgodqH2xxopuyfSsAE',
17-
'HW2HRqN1pXQGH9GfP9xet4XwqtLqFyYGDNRKjUAVgh9u',
18-
'HighJBfnAaqH9cKkeMErQFJZ4ATxQJwxqFupX6zaKTns',
19-
'LGNDXqcm6U57QQ6Ad7icZ6oizkAVKRWrw97KwZy5nVf',
20-
'EpicWWZspT1trKndbDDr29ULViN56rN5vofWSKZp8ePF',
21-
'Mid9NeCpPNxP59fAdsLgMLy7BYexxXFw52ZP58Jrney',
22-
'Lowq9dkpY43VpjfYeRjtKfGA6JtB7HaMmwQgXkjHLvN',
23-
'Low6UekJP3QrFVMfNRTL8CPK2SiGFhvp57sgF2pkmVu',
24-
'miDtj3vgdxVykHzRyFwyG8MXpvK8eQqamSLVdBr7WPt',
25-
'HiGHqwYddP5N2waqUmXPdaASpMpUEvfqPr2fSawctEb',
26-
'epiC3zkqa1RfcPMMM1Kc8m3GZGDwF2RmjbfA3g1BBjn',
27-
'LGNDfXQFMiRMz3qqTNAREmRFQutMvazqqRrzn5i98uj',
28-
'SPrT7eFrCM9UJ4j7Xf9iktKCoBwJjfykFbiNbRsKQm8'
29-
)
30-
AND amount / power(10, 6) IN (25, 50, 100, 250, 1000)
31-
AND token_mint_address = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
32-
AND TIME_RANGE
33-
),
34-
fees AS (
35-
SELECT
36-
SUM(amount / POWER(10, 6)) AS inflow
37-
FROM tokens_solana.transfers
38-
WHERE to_owner = 'DQPERZ9e86pNJ4mhUnCEP8V75yxZofsipoVrRWT5Wdxd'
39-
AND token_mint_address = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
40-
AND TIME_RANGE
41-
),
42-
buyback AS (
43-
SELECT
44-
SUM(amount / POWER(10, 6)) AS buyback
45-
FROM tokens_solana.transfers
46-
WHERE from_owner IN ('GachazZscHZ5bn3vnq1yEC4zpYdhAYJBzuKJwSJksc9z','GachaNgyXTU3zFogQ8Z5jR2BLXs8215X2AtEH18VxJq3')
47-
AND to_owner NOT IN ('BAxTk97HsaJqbnbFmTiQTaL4KSRvJ8Y65ArZCsP6vA5M',
48-
'21KhtC7y2JGYvwc8dcGqTdbrudbM8fgMPJsVwxRQqdY8',
49-
'DFEstpYN3fsz93AC9v2ujzPPngPgodqH2xxopuyfSsAE',
50-
'HW2HRqN1pXQGH9GfP9xet4XwqtLqFyYGDNRKjUAVgh9u',
51-
'HighJBfnAaqH9cKkeMErQFJZ4ATxQJwxqFupX6zaKTns',
52-
'LGNDXqcm6U57QQ6Ad7icZ6oizkAVKRWrw97KwZy5nVf',
53-
'EpicWWZspT1trKndbDDr29ULViN56rN5vofWSKZp8ePF',
54-
'Mid9NeCpPNxP59fAdsLgMLy7BYexxXFw52ZP58Jrney',
55-
'Lowq9dkpY43VpjfYeRjtKfGA6JtB7HaMmwQgXkjHLvN',
56-
'Low6UekJP3QrFVMfNRTL8CPK2SiGFhvp57sgF2pkmVu',
57-
'miDtj3vgdxVykHzRyFwyG8MXpvK8eQqamSLVdBr7WPt',
58-
'HiGHqwYddP5N2waqUmXPdaASpMpUEvfqPr2fSawctEb',
59-
'epiC3zkqa1RfcPMMM1Kc8m3GZGDwF2RmjbfA3g1BBjn',
60-
'LGNDfXQFMiRMz3qqTNAREmRFQutMvazqqRrzn5i98uj',
61-
'SPrT7eFrCM9UJ4j7Xf9iktKCoBwJjfykFbiNbRsKQm8',
62-
'Cc4pHGnoaRWL1WnHsV517T3YvQn5gLDBMiuVXkF9rZhK',
63-
'8373hLiAEXxaJ3oV7SRzx4KHwurEg9rEG98tUPj1sdtX'
5+
const fetch = async (_a: any, _b: any, options: FetchOptions) => {
6+
const dailyFees = options.createBalances();
647

65-
)
66-
AND token_mint_address = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
67-
AND TIME_RANGE
68-
)
69-
SELECT
70-
COALESCE(g.inflow, 0) AS gacha_spend,
71-
COALESCE(f.inflow, 0) AS fees_royalty,
72-
COALESCE(b.buyback, 0) AS buyback,
73-
COALESCE(g.inflow, 0) + COALESCE(f.inflow, 0) - COALESCE(b.buyback, 0) AS net_revenue
74-
FROM gacha_in g
75-
CROSS JOIN fees f
76-
CROSS JOIN buyback b;
77-
`;
78-
79-
const data = await queryDuneSql(options, query);
80-
81-
if (data && data.length > 0) {
82-
const result = data[0];
83-
const netRevenue = result.net_revenue || 0;
84-
dailyFees.addUSDValue(netRevenue);
85-
}
8+
const query = `
9+
WITH gacha_in AS (
10+
SELECT
11+
SUM(amount / POWER(10, 6)) AS inflow
12+
FROM tokens_solana.transfers
13+
WHERE to_owner IN ('GachazZscHZ5bn3vnq1yEC4zpYdhAYJBzuKJwSJksc9z','GachaNgyXTU3zFogQ8Z5jR2BLXs8215X2AtEH18VxJq3','96DULv1BqYfe5wyMr6pVUNC6Uyrtj6yr3tNi6VtfwW9s')
14+
AND from_owner NOT IN (
15+
'BAxTk97HsaJqbnbFmTiQTaL4KSRvJ8Y65ArZCsP6vA5M',
16+
'21KhtC7y2JGYvwc8dcGqTdbrudbM8fgMPJsVwxRQqdY8',
17+
'DFEstpYN3fsz93AC9v2ujzPPngPgodqH2xxopuyfSsAE',
18+
'HW2HRqN1pXQGH9GfP9xet4XwqtLqFyYGDNRKjUAVgh9u',
19+
'HighJBfnAaqH9cKkeMErQFJZ4ATxQJwxqFupX6zaKTns',
20+
'LGNDXqcm6U57QQ6Ad7icZ6oizkAVKRWrw97KwZy5nVf',
21+
'EpicWWZspT1trKndbDDr29ULViN56rN5vofWSKZp8ePF',
22+
'Mid9NeCpPNxP59fAdsLgMLy7BYexxXFw52ZP58Jrney',
23+
'Lowq9dkpY43VpjfYeRjtKfGA6JtB7HaMmwQgXkjHLvN',
24+
'Low6UekJP3QrFVMfNRTL8CPK2SiGFhvp57sgF2pkmVu',
25+
'miDtj3vgdxVykHzRyFwyG8MXpvK8eQqamSLVdBr7WPt',
26+
'HiGHqwYddP5N2waqUmXPdaASpMpUEvfqPr2fSawctEb',
27+
'epiC3zkqa1RfcPMMM1Kc8m3GZGDwF2RmjbfA3g1BBjn',
28+
'LGNDfXQFMiRMz3qqTNAREmRFQutMvazqqRrzn5i98uj',
29+
'SPrT7eFrCM9UJ4j7Xf9iktKCoBwJjfykFbiNbRsKQm8'
30+
)
31+
AND amount / power(10, 6) IN (25, 50, 100, 250, 1000)
32+
AND token_mint_address = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
33+
AND TIME_RANGE
34+
),
35+
fees AS (
36+
SELECT
37+
SUM(amount / POWER(10, 6)) AS inflow
38+
FROM tokens_solana.transfers
39+
WHERE to_owner = 'DQPERZ9e86pNJ4mhUnCEP8V75yxZofsipoVrRWT5Wdxd'
40+
AND token_mint_address = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
41+
AND TIME_RANGE
42+
),
43+
buyback AS (
44+
SELECT
45+
SUM(amount / POWER(10, 6)) AS buyback
46+
FROM tokens_solana.transfers
47+
WHERE from_owner IN ('GachazZscHZ5bn3vnq1yEC4zpYdhAYJBzuKJwSJksc9z','GachaNgyXTU3zFogQ8Z5jR2BLXs8215X2AtEH18VxJq3')
48+
AND to_owner NOT IN (
49+
'BAxTk97HsaJqbnbFmTiQTaL4KSRvJ8Y65ArZCsP6vA5M',
50+
'21KhtC7y2JGYvwc8dcGqTdbrudbM8fgMPJsVwxRQqdY8',
51+
'DFEstpYN3fsz93AC9v2ujzPPngPgodqH2xxopuyfSsAE',
52+
'HW2HRqN1pXQGH9GfP9xet4XwqtLqFyYGDNRKjUAVgh9u',
53+
'HighJBfnAaqH9cKkeMErQFJZ4ATxQJwxqFupX6zaKTns',
54+
'LGNDXqcm6U57QQ6Ad7icZ6oizkAVKRWrw97KwZy5nVf',
55+
'EpicWWZspT1trKndbDDr29ULViN56rN5vofWSKZp8ePF',
56+
'Mid9NeCpPNxP59fAdsLgMLy7BYexxXFw52ZP58Jrney',
57+
'Lowq9dkpY43VpjfYeRjtKfGA6JtB7HaMmwQgXkjHLvN',
58+
'Low6UekJP3QrFVMfNRTL8CPK2SiGFhvp57sgF2pkmVu',
59+
'miDtj3vgdxVykHzRyFwyG8MXpvK8eQqamSLVdBr7WPt',
60+
'HiGHqwYddP5N2waqUmXPdaASpMpUEvfqPr2fSawctEb',
61+
'epiC3zkqa1RfcPMMM1Kc8m3GZGDwF2RmjbfA3g1BBjn',
62+
'LGNDfXQFMiRMz3qqTNAREmRFQutMvazqqRrzn5i98uj',
63+
'SPrT7eFrCM9UJ4j7Xf9iktKCoBwJjfykFbiNbRsKQm8',
64+
'Cc4pHGnoaRWL1WnHsV517T3YvQn5gLDBMiuVXkF9rZhK',
65+
'8373hLiAEXxaJ3oV7SRzx4KHwurEg9rEG98tUPj1sdtX'
66+
)
67+
AND token_mint_address = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
68+
AND TIME_RANGE
69+
)
70+
SELECT
71+
COALESCE(g.inflow, 0) AS gacha_spend,
72+
COALESCE(f.inflow, 0) AS fees_royalty,
73+
COALESCE(b.buyback, 0) AS buyback,
74+
COALESCE(g.inflow, 0) + COALESCE(f.inflow, 0) - COALESCE(b.buyback, 0) AS net_revenue
75+
FROM gacha_in g
76+
CROSS JOIN fees f
77+
CROSS JOIN buyback b
78+
`;
8679

87-
return {
88-
dailyFees,
89-
dailyRevenue: dailyFees,
90-
dailyUserFees: dailyFees,
91-
dailyProtocolRevenue: dailyFees,
92-
}
80+
const data = await queryDuneSql(options, query);
81+
82+
if (data && data.length > 0) {
83+
const result = data[0];
84+
const netRevenue = result.net_revenue || 0;
85+
dailyFees.addUSDValue(netRevenue);
86+
}
87+
88+
return {
89+
dailyFees,
90+
dailyRevenue: dailyFees,
91+
dailyUserFees: dailyFees,
92+
dailyProtocolRevenue: dailyFees,
93+
}
9394
}
9495

9596
const methodology = {
96-
Fees: "Total fees from gacha (card pack sales) and marketplace transactions.",
97-
Revenue: "Revenue from gacha sales + marketplace fees/royalties.",
98-
UserFees: "Total fees paid by users for gacha and marketplace transactions.",
99-
ProtocolRevenue: "Net revenue after accounting for gacha buyback expenses."
97+
Fees: "Total fees from gacha (card pack sales) and marketplace transactions.",
98+
Revenue: "Revenue from gacha sales + marketplace fees/royalties.",
99+
UserFees: "Total fees paid by users for gacha and marketplace transactions.",
100+
ProtocolRevenue: "Net revenue after accounting for gacha buyback expenses."
100101
}
101102

102103
const adapter: SimpleAdapter = {
103-
version: 1,
104-
fetch,
105-
chains: [CHAIN.SOLANA],
106-
start: '2025-06-04',
107-
dependencies: [Dependencies.DUNE],
108-
methodology,
109-
allowNegativeValue: true, // fees from marketplace transactions can be lower than gacha buyback expenses
104+
version: 1,
105+
fetch,
106+
chains: [CHAIN.SOLANA],
107+
start: '2025-06-04',
108+
dependencies: [Dependencies.DUNE],
109+
methodology,
110+
allowNegativeValue: true, // fees from marketplace transactions can be lower than gacha buyback expenses
110111
}
111112

112113
export default adapter;

0 commit comments

Comments
 (0)