@cyberdrk/onchain 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +135 -0
- package/dist/cli/program.d.ts +4 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +43 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/setup-wizard.d.ts +7 -0
- package/dist/cli/setup-wizard.d.ts.map +1 -0
- package/dist/cli/setup-wizard.js +96 -0
- package/dist/cli/setup-wizard.js.map +1 -0
- package/dist/cli/shared.d.ts +35 -0
- package/dist/cli/shared.d.ts.map +1 -0
- package/dist/cli/shared.js +120 -0
- package/dist/cli/shared.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/balance.d.ts +4 -0
- package/dist/commands/balance.d.ts.map +1 -0
- package/dist/commands/balance.js +141 -0
- package/dist/commands/balance.js.map +1 -0
- package/dist/commands/binance.d.ts +4 -0
- package/dist/commands/binance.d.ts.map +1 -0
- package/dist/commands/binance.js +129 -0
- package/dist/commands/binance.js.map +1 -0
- package/dist/commands/coinbase.d.ts +4 -0
- package/dist/commands/coinbase.d.ts.map +1 -0
- package/dist/commands/coinbase.js +122 -0
- package/dist/commands/coinbase.js.map +1 -0
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +90 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/history.d.ts +4 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +124 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/markets.d.ts +4 -0
- package/dist/commands/markets.d.ts.map +1 -0
- package/dist/commands/markets.js +59 -0
- package/dist/commands/markets.js.map +1 -0
- package/dist/commands/polymarket.d.ts +4 -0
- package/dist/commands/polymarket.d.ts.map +1 -0
- package/dist/commands/polymarket.js +180 -0
- package/dist/commands/polymarket.js.map +1 -0
- package/dist/commands/portfolio.d.ts +4 -0
- package/dist/commands/portfolio.d.ts.map +1 -0
- package/dist/commands/portfolio.js +162 -0
- package/dist/commands/portfolio.js.map +1 -0
- package/dist/commands/price.d.ts +4 -0
- package/dist/commands/price.d.ts.map +1 -0
- package/dist/commands/price.js +95 -0
- package/dist/commands/price.js.map +1 -0
- package/dist/commands/setup.d.ts +4 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +47 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/test.d.ts +4 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +198 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/browser-scraper.d.ts +39 -0
- package/dist/lib/browser-scraper.d.ts.map +1 -0
- package/dist/lib/browser-scraper.js +214 -0
- package/dist/lib/browser-scraper.js.map +1 -0
- package/dist/lib/config.d.ts +19 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +52 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/credentials.d.ts +23 -0
- package/dist/lib/credentials.d.ts.map +1 -0
- package/dist/lib/credentials.js +49 -0
- package/dist/lib/credentials.js.map +1 -0
- package/dist/lib/mixins/binance.d.ts +12 -0
- package/dist/lib/mixins/binance.d.ts.map +1 -0
- package/dist/lib/mixins/binance.js +167 -0
- package/dist/lib/mixins/binance.js.map +1 -0
- package/dist/lib/mixins/coinbase.d.ts +11 -0
- package/dist/lib/mixins/coinbase.d.ts.map +1 -0
- package/dist/lib/mixins/coinbase.js +266 -0
- package/dist/lib/mixins/coinbase.js.map +1 -0
- package/dist/lib/mixins/coingecko.d.ts +10 -0
- package/dist/lib/mixins/coingecko.d.ts.map +1 -0
- package/dist/lib/mixins/coingecko.js +217 -0
- package/dist/lib/mixins/coingecko.js.map +1 -0
- package/dist/lib/mixins/coinmarketcap.d.ts +9 -0
- package/dist/lib/mixins/coinmarketcap.d.ts.map +1 -0
- package/dist/lib/mixins/coinmarketcap.js +142 -0
- package/dist/lib/mixins/coinmarketcap.js.map +1 -0
- package/dist/lib/mixins/debank.d.ts +21 -0
- package/dist/lib/mixins/debank.d.ts.map +1 -0
- package/dist/lib/mixins/debank.js +280 -0
- package/dist/lib/mixins/debank.js.map +1 -0
- package/dist/lib/mixins/helius.d.ts +12 -0
- package/dist/lib/mixins/helius.d.ts.map +1 -0
- package/dist/lib/mixins/helius.js +281 -0
- package/dist/lib/mixins/helius.js.map +1 -0
- package/dist/lib/mixins/polymarket.d.ts +13 -0
- package/dist/lib/mixins/polymarket.d.ts.map +1 -0
- package/dist/lib/mixins/polymarket.js +186 -0
- package/dist/lib/mixins/polymarket.js.map +1 -0
- package/dist/lib/onchain-client-base.d.ts +20 -0
- package/dist/lib/onchain-client-base.d.ts.map +1 -0
- package/dist/lib/onchain-client-base.js +45 -0
- package/dist/lib/onchain-client-base.js.map +1 -0
- package/dist/lib/onchain-client-types.d.ts +228 -0
- package/dist/lib/onchain-client-types.d.ts.map +1 -0
- package/dist/lib/onchain-client-types.js +2 -0
- package/dist/lib/onchain-client-types.js.map +1 -0
- package/dist/lib/onchain-client.d.ts +15 -0
- package/dist/lib/onchain-client.d.ts.map +1 -0
- package/dist/lib/onchain-client.js +13 -0
- package/dist/lib/onchain-client.js.map +1 -0
- package/dist/lib/output.d.ts +28 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +94 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/utils/address.d.ts +26 -0
- package/dist/lib/utils/address.d.ts.map +1 -0
- package/dist/lib/utils/address.js +61 -0
- package/dist/lib/utils/address.js.map +1 -0
- package/dist/lib/utils/formatters.d.ts +42 -0
- package/dist/lib/utils/formatters.d.ts.map +1 -0
- package/dist/lib/utils/formatters.js +173 -0
- package/dist/lib/utils/formatters.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
const CMC_API_BASE = 'https://pro-api.coinmarketcap.com/v1';
|
|
2
|
+
export function withCoinMarketCap(Base) {
|
|
3
|
+
class CoinMarketCapMixin extends Base {
|
|
4
|
+
getCmcHeaders() {
|
|
5
|
+
if (!this.coinmarketcapApiKey) {
|
|
6
|
+
throw new Error('CoinMarketCap API key required');
|
|
7
|
+
}
|
|
8
|
+
return {
|
|
9
|
+
Accept: 'application/json',
|
|
10
|
+
'X-CMC_PRO_API_KEY': this.coinmarketcapApiKey,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
async cmcGetTokenPrice(symbolOrSlug) {
|
|
14
|
+
if (!this.coinmarketcapApiKey) {
|
|
15
|
+
return { success: false, error: 'CoinMarketCap API key not configured' };
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
const symbol = symbolOrSlug.toUpperCase();
|
|
19
|
+
const url = `${CMC_API_BASE}/cryptocurrency/quotes/latest?symbol=${symbol}&convert=USD`;
|
|
20
|
+
const response = await this.fetchWithTimeout(url, {
|
|
21
|
+
headers: this.getCmcHeaders(),
|
|
22
|
+
});
|
|
23
|
+
if (!response.ok) {
|
|
24
|
+
return { success: false, error: `CoinMarketCap API error: ${response.status}` };
|
|
25
|
+
}
|
|
26
|
+
const data = (await response.json());
|
|
27
|
+
if (data.status.error_code !== 0) {
|
|
28
|
+
return { success: false, error: data.status.error_message ?? 'Unknown error' };
|
|
29
|
+
}
|
|
30
|
+
const coinData = data.data[symbol];
|
|
31
|
+
if (!coinData) {
|
|
32
|
+
return { success: false, error: `Token "${symbolOrSlug}" not found` };
|
|
33
|
+
}
|
|
34
|
+
const quote = coinData.quote.USD;
|
|
35
|
+
const token = {
|
|
36
|
+
id: coinData.slug,
|
|
37
|
+
symbol: coinData.symbol,
|
|
38
|
+
name: coinData.name,
|
|
39
|
+
priceUsd: quote.price,
|
|
40
|
+
priceChange1h: quote.percent_change_1h,
|
|
41
|
+
priceChange24h: quote.percent_change_24h,
|
|
42
|
+
priceChange7d: quote.percent_change_7d,
|
|
43
|
+
priceChange30d: quote.percent_change_30d,
|
|
44
|
+
marketCap: quote.market_cap,
|
|
45
|
+
marketCapRank: coinData.cmc_rank,
|
|
46
|
+
volume24h: quote.volume_24h,
|
|
47
|
+
circulatingSupply: coinData.circulating_supply,
|
|
48
|
+
totalSupply: coinData.total_supply,
|
|
49
|
+
maxSupply: coinData.max_supply,
|
|
50
|
+
lastUpdated: quote.last_updated,
|
|
51
|
+
};
|
|
52
|
+
return { success: true, token };
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
return {
|
|
56
|
+
success: false,
|
|
57
|
+
error: `Failed to fetch token price: ${error instanceof Error ? error.message : String(error)}`,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async cmcGetTokenPrices(symbols) {
|
|
62
|
+
if (!this.coinmarketcapApiKey) {
|
|
63
|
+
return { success: false, error: 'CoinMarketCap API key not configured' };
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
const symbolList = symbols.map((s) => s.toUpperCase()).join(',');
|
|
67
|
+
const url = `${CMC_API_BASE}/cryptocurrency/quotes/latest?symbol=${symbolList}&convert=USD`;
|
|
68
|
+
const response = await this.fetchWithTimeout(url, {
|
|
69
|
+
headers: this.getCmcHeaders(),
|
|
70
|
+
});
|
|
71
|
+
if (!response.ok) {
|
|
72
|
+
return { success: false, error: `CoinMarketCap API error: ${response.status}` };
|
|
73
|
+
}
|
|
74
|
+
const data = (await response.json());
|
|
75
|
+
if (data.status.error_code !== 0) {
|
|
76
|
+
return { success: false, error: data.status.error_message ?? 'Unknown error' };
|
|
77
|
+
}
|
|
78
|
+
const tokens = Object.values(data.data).map((coinData) => {
|
|
79
|
+
const quote = coinData.quote.USD;
|
|
80
|
+
return {
|
|
81
|
+
id: coinData.slug,
|
|
82
|
+
symbol: coinData.symbol,
|
|
83
|
+
name: coinData.name,
|
|
84
|
+
priceUsd: quote.price,
|
|
85
|
+
priceChange1h: quote.percent_change_1h,
|
|
86
|
+
priceChange24h: quote.percent_change_24h,
|
|
87
|
+
priceChange7d: quote.percent_change_7d,
|
|
88
|
+
priceChange30d: quote.percent_change_30d,
|
|
89
|
+
marketCap: quote.market_cap,
|
|
90
|
+
marketCapRank: coinData.cmc_rank,
|
|
91
|
+
volume24h: quote.volume_24h,
|
|
92
|
+
circulatingSupply: coinData.circulating_supply,
|
|
93
|
+
totalSupply: coinData.total_supply,
|
|
94
|
+
maxSupply: coinData.max_supply,
|
|
95
|
+
lastUpdated: quote.last_updated,
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
return { success: true, tokens };
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
return {
|
|
102
|
+
success: false,
|
|
103
|
+
error: `Failed to fetch token prices: ${error instanceof Error ? error.message : String(error)}`,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async cmcGetMarketOverview() {
|
|
108
|
+
if (!this.coinmarketcapApiKey) {
|
|
109
|
+
return { success: false, error: 'CoinMarketCap API key not configured' };
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
const url = `${CMC_API_BASE}/global-metrics/quotes/latest?convert=USD`;
|
|
113
|
+
const response = await this.fetchWithTimeout(url, {
|
|
114
|
+
headers: this.getCmcHeaders(),
|
|
115
|
+
});
|
|
116
|
+
if (!response.ok) {
|
|
117
|
+
return { success: false, error: `CoinMarketCap API error: ${response.status}` };
|
|
118
|
+
}
|
|
119
|
+
const data = (await response.json());
|
|
120
|
+
if (data.status.error_code !== 0) {
|
|
121
|
+
return { success: false, error: data.status.error_message ?? 'Unknown error' };
|
|
122
|
+
}
|
|
123
|
+
const market = {
|
|
124
|
+
totalMarketCap: data.data.total_market_cap,
|
|
125
|
+
totalVolume24h: data.data.total_volume_24h,
|
|
126
|
+
btcDominance: data.data.btc_dominance,
|
|
127
|
+
ethDominance: data.data.eth_dominance,
|
|
128
|
+
marketCapChange24h: data.data.total_market_cap_yesterday_percentage_change,
|
|
129
|
+
};
|
|
130
|
+
return { success: true, market };
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
return {
|
|
134
|
+
success: false,
|
|
135
|
+
error: `Failed to fetch market overview: ${error instanceof Error ? error.message : String(error)}`,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return CoinMarketCapMixin;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=coinmarketcap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coinmarketcap.js","sourceRoot":"","sources":["../../../src/lib/mixins/coinmarketcap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { AbstractConstructor, Mixin, OnchainClientBase } from '../onchain-client-base.js';
|
|
2
|
+
import type { BalanceResult, DefiResult, EvmChain, HistoryResult, NftResult } from '../onchain-client-types.js';
|
|
3
|
+
export interface DeBankMethods {
|
|
4
|
+
getEvmBalances(address: string, chains?: EvmChain[]): Promise<BalanceResult>;
|
|
5
|
+
getEvmNfts(address: string): Promise<NftResult>;
|
|
6
|
+
getEvmDefiPositions(address: string): Promise<DefiResult>;
|
|
7
|
+
getEvmHistory(address: string, options?: {
|
|
8
|
+
chain?: EvmChain;
|
|
9
|
+
limit?: number;
|
|
10
|
+
cursor?: string;
|
|
11
|
+
}): Promise<HistoryResult>;
|
|
12
|
+
getEvmTotalBalance(address: string): Promise<{
|
|
13
|
+
success: true;
|
|
14
|
+
totalValueUsd: number;
|
|
15
|
+
} | {
|
|
16
|
+
success: false;
|
|
17
|
+
error: string;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
export declare function withDeBank<TBase extends AbstractConstructor<OnchainClientBase>>(Base: TBase): Mixin<TBase, DeBankMethods>;
|
|
21
|
+
//# sourceMappingURL=debank.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debank.d.ts","sourceRoot":"","sources":["../../../src/lib/mixins/debank.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,KAAK,EACV,aAAa,EAEb,UAAU,EACV,QAAQ,EACR,aAAa,EAEb,SAAS,EAGV,MAAM,4BAA4B,CAAC;AAIpC,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7E,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAChD,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1D,aAAa,CACX,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,QAAQ,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9D,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,kBAAkB,CAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1F;AA4FD,wBAAgB,UAAU,CAAC,KAAK,SAAS,mBAAmB,CAAC,iBAAiB,CAAC,EAC7E,IAAI,EAAE,KAAK,GACV,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CA+T7B"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
const DEBANK_API_BASE = 'https://pro-openapi.debank.com/v1';
|
|
2
|
+
export function withDeBank(Base) {
|
|
3
|
+
class DeBankMixin extends Base {
|
|
4
|
+
getDeBankHeaders() {
|
|
5
|
+
if (!this.debankApiKey) {
|
|
6
|
+
throw new Error('DeBank API key required');
|
|
7
|
+
}
|
|
8
|
+
return {
|
|
9
|
+
Accept: 'application/json',
|
|
10
|
+
AccessKey: this.debankApiKey,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
async getEvmBalances(address, chains) {
|
|
14
|
+
if (!this.debankApiKey) {
|
|
15
|
+
return { success: false, error: 'DeBank API key not configured' };
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
const url = chains?.length
|
|
19
|
+
? `${DEBANK_API_BASE}/user/token_list?id=${address}&chain_ids=${chains.join(',')}&is_all=false`
|
|
20
|
+
: `${DEBANK_API_BASE}/user/all_token_list?id=${address}&is_all=true`;
|
|
21
|
+
const response = await this.fetchWithTimeout(url, {
|
|
22
|
+
headers: this.getDeBankHeaders(),
|
|
23
|
+
});
|
|
24
|
+
if (!response.ok) {
|
|
25
|
+
return { success: false, error: `DeBank API error: ${response.status}` };
|
|
26
|
+
}
|
|
27
|
+
const data = (await response.json());
|
|
28
|
+
let totalValueUsd = 0;
|
|
29
|
+
const balances = data
|
|
30
|
+
.filter((token) => token.amount > 0)
|
|
31
|
+
.map((token) => {
|
|
32
|
+
const valueUsd = token.price ? token.amount * token.price : null;
|
|
33
|
+
if (valueUsd) {
|
|
34
|
+
totalValueUsd += valueUsd;
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
symbol: token.symbol,
|
|
38
|
+
name: token.name,
|
|
39
|
+
chain: token.chain,
|
|
40
|
+
contractAddress: token.id,
|
|
41
|
+
balanceRaw: token.raw_amount_hex_str ?? String(token.raw_amount ?? 0),
|
|
42
|
+
balanceFormatted: token.amount,
|
|
43
|
+
decimals: token.decimals,
|
|
44
|
+
priceUsd: token.price ?? null,
|
|
45
|
+
valueUsd,
|
|
46
|
+
logoUrl: token.logo_url,
|
|
47
|
+
};
|
|
48
|
+
})
|
|
49
|
+
.sort((a, b) => (b.valueUsd ?? 0) - (a.valueUsd ?? 0));
|
|
50
|
+
return { success: true, balances, totalValueUsd };
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
return {
|
|
54
|
+
success: false,
|
|
55
|
+
error: `Failed to fetch EVM balances: ${error instanceof Error ? error.message : String(error)}`,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async getEvmNfts(address) {
|
|
60
|
+
if (!this.debankApiKey) {
|
|
61
|
+
return { success: false, error: 'DeBank API key not configured' };
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const url = `${DEBANK_API_BASE}/user/all_nft_list?id=${address}`;
|
|
65
|
+
const response = await this.fetchWithTimeout(url, {
|
|
66
|
+
headers: this.getDeBankHeaders(),
|
|
67
|
+
});
|
|
68
|
+
if (!response.ok) {
|
|
69
|
+
return { success: false, error: `DeBank API error: ${response.status}` };
|
|
70
|
+
}
|
|
71
|
+
const data = (await response.json());
|
|
72
|
+
let totalEstimatedValueUsd = 0;
|
|
73
|
+
const nfts = data.map((nft) => {
|
|
74
|
+
const floorPrice = nft.collection?.floor_price;
|
|
75
|
+
if (floorPrice) {
|
|
76
|
+
totalEstimatedValueUsd += floorPrice;
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
id: nft.id,
|
|
80
|
+
name: nft.name ?? `#${nft.inner_id}`,
|
|
81
|
+
collection: nft.collection?.name ?? 'Unknown',
|
|
82
|
+
chain: nft.chain,
|
|
83
|
+
contractAddress: nft.contract_id,
|
|
84
|
+
tokenId: nft.inner_id,
|
|
85
|
+
imageUrl: nft.thumbnail_url ?? nft.content,
|
|
86
|
+
floorPriceUsd: floorPrice,
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
return { success: true, nfts, totalEstimatedValueUsd };
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
return {
|
|
93
|
+
success: false,
|
|
94
|
+
error: `Failed to fetch EVM NFTs: ${error instanceof Error ? error.message : String(error)}`,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async getEvmDefiPositions(address) {
|
|
99
|
+
if (!this.debankApiKey) {
|
|
100
|
+
return { success: false, error: 'DeBank API key not configured' };
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
const url = `${DEBANK_API_BASE}/user/all_complex_protocol_list?id=${address}`;
|
|
104
|
+
const response = await this.fetchWithTimeout(url, {
|
|
105
|
+
headers: this.getDeBankHeaders(),
|
|
106
|
+
});
|
|
107
|
+
if (!response.ok) {
|
|
108
|
+
return { success: false, error: `DeBank API error: ${response.status}` };
|
|
109
|
+
}
|
|
110
|
+
const data = (await response.json());
|
|
111
|
+
let totalValueUsd = 0;
|
|
112
|
+
const positions = [];
|
|
113
|
+
for (const protocol of data) {
|
|
114
|
+
for (const item of protocol.portfolio_item_list) {
|
|
115
|
+
const netValue = item.stats.net_usd_value;
|
|
116
|
+
totalValueUsd += netValue;
|
|
117
|
+
// Determine position type
|
|
118
|
+
let type = 'other';
|
|
119
|
+
if (item.detail_types.includes('lending')) {
|
|
120
|
+
type = 'lending';
|
|
121
|
+
}
|
|
122
|
+
else if (item.detail_types.includes('staked')) {
|
|
123
|
+
type = 'staking';
|
|
124
|
+
}
|
|
125
|
+
else if (item.detail_types.includes('liquidity')) {
|
|
126
|
+
type = 'liquidity';
|
|
127
|
+
}
|
|
128
|
+
else if (item.detail_types.includes('farming') || item.detail_types.includes('reward')) {
|
|
129
|
+
type = 'farming';
|
|
130
|
+
}
|
|
131
|
+
else if (item.detail_types.includes('vesting') || item.detail_types.includes('locked')) {
|
|
132
|
+
type = 'vesting';
|
|
133
|
+
}
|
|
134
|
+
// Collect all tokens from the position
|
|
135
|
+
const allTokens = [
|
|
136
|
+
...(item.detail.supply_token_list ?? []),
|
|
137
|
+
...(item.detail.token_list ?? []),
|
|
138
|
+
...(item.detail.reward_token_list ?? []),
|
|
139
|
+
];
|
|
140
|
+
const assets = allTokens.map((token) => ({
|
|
141
|
+
symbol: token.symbol,
|
|
142
|
+
amount: token.amount,
|
|
143
|
+
valueUsd: token.price ? token.amount * token.price : null,
|
|
144
|
+
}));
|
|
145
|
+
positions.push({
|
|
146
|
+
protocol: protocol.name,
|
|
147
|
+
protocolLogoUrl: protocol.logo_url,
|
|
148
|
+
chain: protocol.chain,
|
|
149
|
+
type,
|
|
150
|
+
assets,
|
|
151
|
+
totalValueUsd: netValue,
|
|
152
|
+
healthFactor: item.detail.health_rate,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return { success: true, positions, totalValueUsd };
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
return {
|
|
160
|
+
success: false,
|
|
161
|
+
error: `Failed to fetch DeFi positions: ${error instanceof Error ? error.message : String(error)}`,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
async getEvmHistory(address, options) {
|
|
166
|
+
if (!this.debankApiKey) {
|
|
167
|
+
return { success: false, error: 'DeBank API key not configured' };
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
const limit = options?.limit ?? 20;
|
|
171
|
+
let url = `${DEBANK_API_BASE}/user/all_history_list?id=${address}&page_count=${limit}`;
|
|
172
|
+
if (options?.chain) {
|
|
173
|
+
url = `${DEBANK_API_BASE}/user/history_list?id=${address}&chain_id=${options.chain}&page_count=${limit}`;
|
|
174
|
+
}
|
|
175
|
+
if (options?.cursor) {
|
|
176
|
+
url += `&start_time=${options.cursor}`;
|
|
177
|
+
}
|
|
178
|
+
const response = await this.fetchWithTimeout(url, {
|
|
179
|
+
headers: this.getDeBankHeaders(),
|
|
180
|
+
});
|
|
181
|
+
if (!response.ok) {
|
|
182
|
+
return { success: false, error: `DeBank API error: ${response.status}` };
|
|
183
|
+
}
|
|
184
|
+
const data = (await response.json());
|
|
185
|
+
const transactions = data.history_list.map((item) => {
|
|
186
|
+
// Determine transaction type
|
|
187
|
+
let type = 'other';
|
|
188
|
+
if (item.cate_id === 'send') {
|
|
189
|
+
type = 'send';
|
|
190
|
+
}
|
|
191
|
+
else if (item.cate_id === 'receive') {
|
|
192
|
+
type = 'receive';
|
|
193
|
+
}
|
|
194
|
+
else if (item.cate_id === 'swap' || item.cate_id === 'trade') {
|
|
195
|
+
type = 'swap';
|
|
196
|
+
}
|
|
197
|
+
else if (item.cate_id === 'approve') {
|
|
198
|
+
type = 'approve';
|
|
199
|
+
}
|
|
200
|
+
// Get token transfers
|
|
201
|
+
const tokens = [];
|
|
202
|
+
if (item.sends) {
|
|
203
|
+
for (const send of item.sends) {
|
|
204
|
+
const tokenInfo = data.token_dict[send.token_id];
|
|
205
|
+
tokens.push({
|
|
206
|
+
symbol: tokenInfo?.symbol ?? 'UNKNOWN',
|
|
207
|
+
amount: send.amount,
|
|
208
|
+
direction: 'out',
|
|
209
|
+
valueUsd: tokenInfo?.price ? send.amount * tokenInfo.price : undefined,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
if (item.receives) {
|
|
214
|
+
for (const receive of item.receives) {
|
|
215
|
+
const tokenInfo = data.token_dict[receive.token_id];
|
|
216
|
+
tokens.push({
|
|
217
|
+
symbol: tokenInfo?.symbol ?? 'UNKNOWN',
|
|
218
|
+
amount: receive.amount,
|
|
219
|
+
direction: 'in',
|
|
220
|
+
valueUsd: tokenInfo?.price ? receive.amount * tokenInfo.price : undefined,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
id: item.id,
|
|
226
|
+
hash: item.id.split('_')[0] ?? item.id,
|
|
227
|
+
chain: item.chain,
|
|
228
|
+
timestamp: item.time_at,
|
|
229
|
+
type,
|
|
230
|
+
status: item.tx?.status === 1 ? 'success' : 'failed',
|
|
231
|
+
from: item.tx?.from_addr ?? '',
|
|
232
|
+
to: item.tx?.to_addr ?? '',
|
|
233
|
+
fee: item.tx?.usd_gas_fee
|
|
234
|
+
? {
|
|
235
|
+
amount: item.tx.eth_gas_fee ?? 0,
|
|
236
|
+
symbol: 'ETH',
|
|
237
|
+
valueUsd: item.tx.usd_gas_fee,
|
|
238
|
+
}
|
|
239
|
+
: undefined,
|
|
240
|
+
tokens: tokens.length > 0 ? tokens : undefined,
|
|
241
|
+
};
|
|
242
|
+
});
|
|
243
|
+
// Use the last item's timestamp as cursor for pagination
|
|
244
|
+
const lastItem = data.history_list[data.history_list.length - 1];
|
|
245
|
+
const nextCursor = lastItem ? String(lastItem.time_at) : undefined;
|
|
246
|
+
return { success: true, transactions, nextCursor };
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
return {
|
|
250
|
+
success: false,
|
|
251
|
+
error: `Failed to fetch EVM history: ${error instanceof Error ? error.message : String(error)}`,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
async getEvmTotalBalance(address) {
|
|
256
|
+
if (!this.debankApiKey) {
|
|
257
|
+
return { success: false, error: 'DeBank API key not configured' };
|
|
258
|
+
}
|
|
259
|
+
try {
|
|
260
|
+
const url = `${DEBANK_API_BASE}/user/total_balance?id=${address}`;
|
|
261
|
+
const response = await this.fetchWithTimeout(url, {
|
|
262
|
+
headers: this.getDeBankHeaders(),
|
|
263
|
+
});
|
|
264
|
+
if (!response.ok) {
|
|
265
|
+
return { success: false, error: `DeBank API error: ${response.status}` };
|
|
266
|
+
}
|
|
267
|
+
const data = (await response.json());
|
|
268
|
+
return { success: true, totalValueUsd: data.total_usd_value };
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
return {
|
|
272
|
+
success: false,
|
|
273
|
+
error: `Failed to fetch total balance: ${error instanceof Error ? error.message : String(error)}`,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return DeBankMixin;
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=debank.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debank.js","sourceRoot":"","sources":["../../../src/lib/mixins/debank.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AbstractConstructor, Mixin, OnchainClientBase } from '../onchain-client-base.js';
|
|
2
|
+
import type { BalanceResult, HistoryResult, NftResult } from '../onchain-client-types.js';
|
|
3
|
+
export interface HeliusMethods {
|
|
4
|
+
getSolanaBalances(address: string): Promise<BalanceResult>;
|
|
5
|
+
getSolanaNfts(address: string): Promise<NftResult>;
|
|
6
|
+
getSolanaHistory(address: string, options?: {
|
|
7
|
+
limit?: number;
|
|
8
|
+
cursor?: string;
|
|
9
|
+
}): Promise<HistoryResult>;
|
|
10
|
+
}
|
|
11
|
+
export declare function withHelius<TBase extends AbstractConstructor<OnchainClientBase>>(Base: TBase): Mixin<TBase, HeliusMethods>;
|
|
12
|
+
//# sourceMappingURL=helius.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helius.d.ts","sourceRoot":"","sources":["../../../src/lib/mixins/helius.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAEb,SAAS,EAGV,MAAM,4BAA4B,CAAC;AAKpC,MAAM,WAAW,aAAa;IAC5B,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3D,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACnD,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC1G;AAqGD,wBAAgB,UAAU,CAAC,KAAK,SAAS,mBAAmB,CAAC,iBAAiB,CAAC,EAC7E,IAAI,EAAE,KAAK,GACV,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CAyV7B"}
|