@covalenthq/client-sdk 0.7.2 → 0.7.3
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/README.md +2 -1
- package/dist/cjs/index.js +255 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/services/CovalentClient.d.ts +2 -2
- package/dist/cjs/services/TransactionService.d.ts +45 -0
- package/dist/cjs/util/Chains.d.ts +19 -1
- package/dist/cjs/util/types/TransactionServiceTypes.d.ts +18 -0
- package/dist/es/index.js +255 -3
- package/dist/es/index.js.map +1 -1
- package/dist/es/services/CovalentClient.d.ts +2 -2
- package/dist/es/services/TransactionService.d.ts +45 -0
- package/dist/es/util/Chains.d.ts +19 -1
- package/dist/es/util/types/TransactionServiceTypes.d.ts +18 -0
- package/dist/esm/index.js +255 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/services/CovalentClient.d.ts +2 -2
- package/dist/esm/services/TransactionService.d.ts +45 -0
- package/dist/esm/util/Chains.d.ts +19 -1
- package/dist/esm/util/types/TransactionServiceTypes.d.ts +18 -0
- package/dist/services/CovalentClient.d.ts +2 -2
- package/dist/services/CovalentClient.js +1 -1
- package/dist/services/TransactionService.d.ts +45 -0
- package/dist/services/TransactionService.js +236 -2
- package/dist/services/TransactionService.js.map +1 -1
- package/dist/util/Chains.d.ts +19 -1
- package/dist/util/Chains.js +18 -0
- package/dist/util/Chains.js.map +1 -1
- package/dist/util/types/TransactionServiceTypes.d.ts +18 -0
- package/package.json +1 -1
|
@@ -5,9 +5,9 @@ import { NftService } from "./NftService";
|
|
|
5
5
|
import { PricingService } from "./PricingService";
|
|
6
6
|
import { TransactionService } from "./TransactionService";
|
|
7
7
|
import { XykService } from "./XykService";
|
|
8
|
-
export type Chain = "btc-mainnet" | "eth-mainnet" | "matic-mainnet" | "bsc-mainnet" | "avalanche-mainnet" | "optimism-mainnet" | "fantom-mainnet" | "moonbeam-mainnet" | "moonbeam-moonriver" | "rsk-mainnet" | "arbitrum-mainnet" | "palm-mainnet" | "klaytn-mainnet" | "heco-mainnet" | "nervos-godwoken-mainnet" | "axie-mainnet" | "evmos-mainnet" | "astar-mainnet" | "iotex-mainnet" | "harmony-mainnet" | "cronos-mainnet" | "aurora-mainnet" | "emerald-paratime-mainnet" | "boba-mainnet" | "eth-goerli" | "matic-mumbai" | "avalanche-testnet" | "bsc-testnet" | "moonbeam-moonbase-alpha" | "rsk-testnet" | "arbitrum-goerli" | "fantom-testnet" | "palm-testnet" | "heco-testnet" | "nervos-godwoken-testnet" | "evmos-testnet" | "astar-shiden" | "iotex-testnet" | "harmony-testnet" | "aurora-testnet" | "scroll-sepolia-testnet" | "covalent-internal-network-v1" | "defi-kingdoms-mainnet" | "swimmer-mainnet" | "boba-avalanche-mainnet" | "boba-bobabeam-mainnet" | "boba-bnb-mainnet" | "boba-rinkeby-testnet" | "boba-bobabase-testnet" | "boba-bnb-testnet" | "boba-avalanche-testnet" | "klaytn-testnet" | "gather-mainnet" | "gather-testnet" | "skale-calypso" | "skale-mainnet" | "skale-razor" | "avalanche-dexalot-mainnet" | "skale-omnus" | "avalanche-dexalot-testnet" | "astar-shibuya" | "cronos-testnet" | "defi-kingdoms-testnet" | "metis-mainnet" | "metis-stardust" | "milkomeda-a1-mainnet" | "milkomeda-a1-devnet" | "milkomeda-c1-mainnet" | "milkomeda-c1-devnet" | "swimmer-testnet" | "solana-mainnet" | "skale-europa" | "meter-mainnet" | "meter-testnet" | "skale-exorde" | "boba-goerli" | "neon-testnet" | "skale-staging-uum" | "skale-staging-lcc" | "arbitrum-nova-mainnet" | "canto-mainnet" | "bittorrent-mainnet" | "bittorrent-testnet" | "flarenetworks-flare-mainnet" | "flarenetworks-flare-testnet" | "flarenetworks-canary-mainnet" | "flarenetworks-canary-testnet" | "kcc-mainnet" | "kcc-testnet" | "polygon-zkevm-testnet" | "linea-testnet" | "base-testnet" | "mantle-testnet" | "scroll-alpha-testnet" | "oasys-mainnet" | "oasys-testnet" | "findora-mainnet" | "findora-forge-testnet" | "sx-mainnet" | "oasis-sapphire-mainnet" | "oasis-sapphire-testnet" | "optimism-goerli" | "polygon-zkevm-mainnet" | "horizen-yuma-testnet" | "clv-parachain" | "energi-mainnet" | "energi-testnet" | "horizen-gobi-testnet" | "eth-sepolia" | "skale-nebula" | "skale-battleground" | "avalanche-meld-testnet" | "gunzilla-testnet" | "ultron-mainnet" | "ultron-testnet" | "zora-mainnet" | "zora-testnet" | "neon-mainnet" | "avalanche-shrapnel-mainnet" | "base-mainnet" | "mantle-mainnet" | "avalanche-loco-legends-mainnet" | "linea-mainnet" | "horizen-eon-mainnet" | "avalanche-numbers" | "avalanche-dos" | "avalanche-step-network" | "avalanche-xplus" | "avalanche-xanachain" | "avalanche-meld-mainnet" | "opside-public-zkevm" | "opside-law-chain" | "avalanche-shrapnel-testnet" | "avalanche-loco-legends-testnet" | "opside-cb-zkevm" | "opside-pre-alpha-testnet" | "opside-era7" | "opside-xthrill" | "zksync-mainnet" | "metis-testnet" | "zksync-testnet" | "avalanche-blitz-testnet" | "avalanche-d-chain-testnet" | "avalanche-green-dot-testnet" | "avalanche-mintara-testnet" | "avalanche-beam-testnet" | "bnb-meta-apes-mainnet" | "bnb-antimatter-mainnet" | "bnb-antimatter-testnet" | "bnb-opbnb-testnet" | "opside-debox" | "opside-jackbot" | "opside-odx-zkevm-testnet" | "opside-readon-content-testnet" | "opside-relation" | "opside-soquest-zkevm" | "opside-vip3" | "opside-zkmeta" | "avalanche-pulsar-testnet" | "avalanche-uptn" | "bnb-fncy-mainnet" | "zetachain-testnet" | "kinto-testnet" | "mode-testnet" | "loot-mainnet" | "bnb-fncy-testnet" | "manta-testnet" | "pgn-mainnet" | "pgn-testnet" | "gnosis-mainnet" | "gnosis-testnet" | "rollux-mainnet" | "rollux-testnet" | "taiko-jolnir-testnet" | "optimism-sepolia" | "bnb-opbnb-mainnet" | "telos-mainnet" | "telos-testnet";
|
|
8
|
+
export type Chain = "btc-mainnet" | "eth-mainnet" | "matic-mainnet" | "bsc-mainnet" | "avalanche-mainnet" | "optimism-mainnet" | "fantom-mainnet" | "moonbeam-mainnet" | "moonbeam-moonriver" | "rsk-mainnet" | "arbitrum-mainnet" | "palm-mainnet" | "klaytn-mainnet" | "heco-mainnet" | "nervos-godwoken-mainnet" | "axie-mainnet" | "evmos-mainnet" | "astar-mainnet" | "iotex-mainnet" | "harmony-mainnet" | "cronos-mainnet" | "aurora-mainnet" | "emerald-paratime-mainnet" | "boba-mainnet" | "eth-goerli" | "matic-mumbai" | "avalanche-testnet" | "bsc-testnet" | "moonbeam-moonbase-alpha" | "rsk-testnet" | "arbitrum-goerli" | "fantom-testnet" | "palm-testnet" | "heco-testnet" | "nervos-godwoken-testnet" | "evmos-testnet" | "astar-shiden" | "iotex-testnet" | "harmony-testnet" | "aurora-testnet" | "scroll-l2-testnet" | "scroll-sepolia-testnet" | "covalent-internal-network-v1" | "defi-kingdoms-mainnet" | "swimmer-mainnet" | "boba-avalanche-mainnet" | "boba-bobabeam-mainnet" | "boba-bnb-mainnet" | "boba-rinkeby-testnet" | "boba-bobabase-testnet" | "boba-bnb-testnet" | "boba-avalanche-testnet" | "klaytn-testnet" | "gather-mainnet" | "gather-testnet" | "skale-calypso" | "skale-mainnet" | "skale-razor" | "avalanche-dexalot-mainnet" | "skale-omnus" | "avalanche-dexalot-testnet" | "astar-shibuya" | "cronos-testnet" | "defi-kingdoms-testnet" | "metis-mainnet" | "metis-stardust" | "milkomeda-a1-mainnet" | "milkomeda-a1-devnet" | "milkomeda-c1-mainnet" | "milkomeda-c1-devnet" | "swimmer-testnet" | "solana-mainnet" | "skale-europa" | "meter-mainnet" | "meter-testnet" | "skale-exorde" | "boba-goerli" | "neon-testnet" | "skale-staging-uum" | "skale-staging-lcc" | "arbitrum-nova-mainnet" | "canto-mainnet" | "bittorrent-mainnet" | "bittorrent-testnet" | "flarenetworks-flare-mainnet" | "flarenetworks-flare-testnet" | "flarenetworks-canary-mainnet" | "flarenetworks-canary-testnet" | "kcc-mainnet" | "kcc-testnet" | "polygon-zkevm-testnet" | "linea-testnet" | "base-testnet" | "mantle-testnet" | "scroll-alpha-testnet" | "oasys-mainnet" | "oasys-testnet" | "findora-mainnet" | "findora-forge-testnet" | "sx-mainnet" | "oasis-sapphire-mainnet" | "oasis-sapphire-testnet" | "optimism-goerli" | "polygon-zkevm-mainnet" | "horizen-yuma-testnet" | "clv-parachain" | "energi-mainnet" | "energi-testnet" | "horizen-gobi-testnet" | "eth-sepolia" | "skale-nebula" | "skale-battleground" | "avalanche-meld-testnet" | "gunzilla-testnet" | "ultron-mainnet" | "ultron-testnet" | "zora-mainnet" | "zora-testnet" | "neon-mainnet" | "avalanche-shrapnel-mainnet" | "base-mainnet" | "mantle-mainnet" | "avalanche-loco-legends-mainnet" | "linea-mainnet" | "horizen-eon-mainnet" | "avalanche-numbers" | "avalanche-dos" | "avalanche-step-network" | "avalanche-xplus" | "avalanche-xanachain" | "avalanche-meld-mainnet" | "opside-public-zkevm" | "opside-law-chain" | "avalanche-shrapnel-testnet" | "avalanche-loco-legends-testnet" | "opside-cb-zkevm" | "opside-pre-alpha-testnet" | "opside-era7" | "opside-xthrill" | "zksync-mainnet" | "metis-testnet" | "zksync-testnet" | "avalanche-blitz-testnet" | "avalanche-d-chain-testnet" | "avalanche-green-dot-testnet" | "avalanche-mintara-testnet" | "avalanche-beam-testnet" | "bnb-meta-apes-mainnet" | "bnb-antimatter-mainnet" | "bnb-antimatter-testnet" | "bnb-opbnb-testnet" | "opside-debox" | "opside-jackbot" | "opside-odx-zkevm-testnet" | "opside-readon-content-testnet" | "opside-relation" | "opside-soquest-zkevm" | "opside-vip3" | "opside-zkmeta" | "avalanche-pulsar-testnet" | "avalanche-uptn" | "bnb-fncy-mainnet" | "zetachain-testnet" | "kinto-testnet" | "mode-testnet" | "loot-mainnet" | "bnb-fncy-testnet" | "manta-testnet" | "pgn-mainnet" | "pgn-testnet" | "gnosis-mainnet" | "gnosis-testnet" | "rollux-mainnet" | "rollux-testnet" | "taiko-jolnir-testnet" | "optimism-sepolia" | "bnb-opbnb-mainnet" | "telos-mainnet" | "telos-testnet" | "avalanche-hubble-exchange-testnet" | "avalanche-miho-testnet" | "avalanche-bulletin-testnet" | "avalanche-kiwi-testnet" | "avalanche-hero-testnet" | "avalanche-avacloud-testnet" | "avalanche-thirdweb-testnet" | "avalanche-mondrian-testnet" | "avalanche-conduit-testnet" | "avalanche-nmac-testnet" | "avalanche-orderly-testnet" | "avalanche-amplify-testnet" | "avalanche-mirai-testnet" | "avalanche-wagmi-testnet" | "avalanche-playa3ull-testnet" | "avalanche-beam-mainnet" | "scroll-mainnet" | "eth-holesky";
|
|
9
9
|
export type Quote = "USD" | "CAD" | "EUR" | "SGD" | "INR" | "JPY" | "VND" | "CNY" | "KRW" | "RUB" | "TRY" | "NGN" | "ARS" | "AUD" | "CHF" | "GBP";
|
|
10
|
-
export declare const userAgent = "com.covalenthq.sdk.typescript/0.7.
|
|
10
|
+
export declare const userAgent = "com.covalenthq.sdk.typescript/0.7.3";
|
|
11
11
|
export declare class Response<T> {
|
|
12
12
|
data: T;
|
|
13
13
|
error: boolean;
|
|
@@ -431,6 +431,31 @@ declare class TransactionsResponse {
|
|
|
431
431
|
prev(): Promise<Response<TransactionsResponse>>;
|
|
432
432
|
next(): Promise<Response<TransactionsResponse>>;
|
|
433
433
|
}
|
|
434
|
+
declare class TransactionsTimeBucketResponse {
|
|
435
|
+
private _debug;
|
|
436
|
+
private _apiKey;
|
|
437
|
+
private _threadCount;
|
|
438
|
+
private _urlParams;
|
|
439
|
+
/** * The requested address. */
|
|
440
|
+
address: string;
|
|
441
|
+
/** * The timestamp when the response was generated. Useful to show data staleness to users. */
|
|
442
|
+
updated_at: Date;
|
|
443
|
+
/** * The requested quote currency eg: `USD`. */
|
|
444
|
+
quote_currency: string;
|
|
445
|
+
/** * The requested chain ID eg: `1`. */
|
|
446
|
+
chain_id: number;
|
|
447
|
+
/** * The requested chain name eg: `eth-mainnet`. */
|
|
448
|
+
chain_name: string;
|
|
449
|
+
complete: boolean;
|
|
450
|
+
/** * The current bucket of the response. */
|
|
451
|
+
current_bucket: number;
|
|
452
|
+
links: PaginationLinks;
|
|
453
|
+
/** * List of response items. */
|
|
454
|
+
items: Transaction[];
|
|
455
|
+
constructor(data: TransactionsTimeBucketResponse, _debug: boolean, _apiKey: string, _threadCount: number, _urlParams: URLSearchParams);
|
|
456
|
+
prev(): Promise<Response<TransactionsTimeBucketResponse>>;
|
|
457
|
+
next(): Promise<Response<TransactionsTimeBucketResponse>>;
|
|
458
|
+
}
|
|
434
459
|
export interface GetTransactionQueryParamOpts {
|
|
435
460
|
/** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */
|
|
436
461
|
quoteCurrency?: Quote;
|
|
@@ -473,6 +498,14 @@ export interface GetTransactionsForAddressV3QueryParamOpts {
|
|
|
473
498
|
/** * Include safe details. */
|
|
474
499
|
withSafe?: boolean;
|
|
475
500
|
}
|
|
501
|
+
export interface GetTimeBucketTransactionsForAddressQueryParamOpts {
|
|
502
|
+
/** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */
|
|
503
|
+
quoteCurrency?: Quote;
|
|
504
|
+
/** * Omit log events. */
|
|
505
|
+
noLogs?: boolean;
|
|
506
|
+
/** * Include safe details. */
|
|
507
|
+
withSafe?: boolean;
|
|
508
|
+
}
|
|
476
509
|
export declare class TransactionService {
|
|
477
510
|
private apiKey;
|
|
478
511
|
private debug;
|
|
@@ -559,5 +592,17 @@ export declare class TransactionService {
|
|
|
559
592
|
*
|
|
560
593
|
*/
|
|
561
594
|
getTransactionsForAddressV3(chainName: Chain | Chains, walletAddress: string, page: number, queryParamOpts?: GetTransactionsForAddressV3QueryParamOpts): Promise<Response<TransactionsResponse>>;
|
|
595
|
+
/**
|
|
596
|
+
*
|
|
597
|
+
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
598
|
+
* @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
599
|
+
* @param {number} timeBucket - The 0-indexed 15-minute time bucket. E.g. 27 Feb 2023 05:23 GMT = 1677475383 (Unix time). 1677475383/900=1863861 timeBucket.
|
|
600
|
+
* @param {GetTimeBucketTransactionsForAddressQueryParamOpts} queryParamOpts
|
|
601
|
+
* - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.
|
|
602
|
+
* - `noLogs`: Omit log events.
|
|
603
|
+
* - `withSafe`: Include safe details.
|
|
604
|
+
*
|
|
605
|
+
*/
|
|
606
|
+
getTimeBucketTransactionsForAddress(chainName: Chain | Chains, walletAddress: string, timeBucket: number, queryParamOpts?: GetTimeBucketTransactionsForAddressQueryParamOpts): Promise<Response<TransactionsTimeBucketResponse>>;
|
|
562
607
|
}
|
|
563
608
|
export {};
|
|
@@ -176,5 +176,23 @@ export declare enum Chains {
|
|
|
176
176
|
OPTIMISM_SEPOLIA = "optimism-sepolia",
|
|
177
177
|
BNB_OPBNB_MAINNET = "bnb-opbnb-mainnet",
|
|
178
178
|
TELOS_MAINNET = "telos-mainnet",
|
|
179
|
-
TELOS_TESTNET = "telos-testnet"
|
|
179
|
+
TELOS_TESTNET = "telos-testnet",
|
|
180
|
+
AVALANCHE_HUBBLE_EXCHANGE_TESTNET = "avalanche-hubble-exchange-testnet",
|
|
181
|
+
AVALANCHE_MIHO_TESTNET = "avalanche-miho-testnet",
|
|
182
|
+
AVALANCHE_BULLETIN_TESTNET = "avalanche-bulletin-testnet",
|
|
183
|
+
AVALANCHE_KIWI_TESTNET = "avalanche-kiwi-testnet",
|
|
184
|
+
AVALANCHE_HERO_TESTNET = "avalanche-hero-testnet",
|
|
185
|
+
AVALANCHE_AVACLOUD_TESTNET = "avalanche-avacloud-testnet",
|
|
186
|
+
AVALANCHE_THIRDWEB_TESTNET = "avalanche-thirdweb-testnet",
|
|
187
|
+
AVALANCHE_MONDRIAN_TESTNET = "avalanche-mondrian-testnet",
|
|
188
|
+
AVALANCHE_CONDUIT_TESTNET = "avalanche-conduit-testnet",
|
|
189
|
+
AVALANCHE_NMAC_TESTNET = "avalanche-nmac-testnet",
|
|
190
|
+
AVALANCHE_ORDERLY_TESTNET = "avalanche-orderly-testnet",
|
|
191
|
+
AVALANCHE_AMPLIFY_TESTNET = "avalanche-amplify-testnet",
|
|
192
|
+
AVALANCHE_MIRAI_TESTNET = "avalanche-mirai-testnet",
|
|
193
|
+
AVALANCHE_WAGMI_TESTNET = "avalanche-wagmi-testnet",
|
|
194
|
+
AVALANCHE_PLAYA3ULL_TESTNET = "avalanche-playa3ull-testnet",
|
|
195
|
+
AVALANCHE_BEAM_MAINNET = "avalanche-beam-mainnet",
|
|
196
|
+
SCROLL_MAINNET = "scroll-mainnet",
|
|
197
|
+
ETH_HOLESKY = "eth-holesky"
|
|
180
198
|
}
|
|
@@ -284,6 +284,24 @@ export interface PaginationLinks {
|
|
|
284
284
|
/** * URL link to the previous page. */
|
|
285
285
|
next: string;
|
|
286
286
|
}
|
|
287
|
+
export interface TransactionsTimeBucketResponse {
|
|
288
|
+
/** * The requested address. */
|
|
289
|
+
address: string;
|
|
290
|
+
/** * The timestamp when the response was generated. Useful to show data staleness to users. */
|
|
291
|
+
updated_at: Date;
|
|
292
|
+
/** * The requested quote currency eg: `USD`. */
|
|
293
|
+
quote_currency: string;
|
|
294
|
+
/** * The requested chain ID eg: `1`. */
|
|
295
|
+
chain_id: number;
|
|
296
|
+
/** * The requested chain name eg: `eth-mainnet`. */
|
|
297
|
+
chain_name: string;
|
|
298
|
+
complete: boolean;
|
|
299
|
+
/** * The current bucket of the response. */
|
|
300
|
+
current_bucket: number;
|
|
301
|
+
links: PaginationLinks;
|
|
302
|
+
/** * List of response items. */
|
|
303
|
+
items: Transaction[];
|
|
304
|
+
}
|
|
287
305
|
export interface TransactionsBlockResponse {
|
|
288
306
|
/** * The timestamp when the response was generated. Useful to show data staleness to users. */
|
|
289
307
|
updated_at: Date;
|
|
@@ -5,9 +5,9 @@ import { NftService } from "./NftService";
|
|
|
5
5
|
import { PricingService } from "./PricingService";
|
|
6
6
|
import { TransactionService } from "./TransactionService";
|
|
7
7
|
import { XykService } from "./XykService";
|
|
8
|
-
export type Chain = "btc-mainnet" | "eth-mainnet" | "matic-mainnet" | "bsc-mainnet" | "avalanche-mainnet" | "optimism-mainnet" | "fantom-mainnet" | "moonbeam-mainnet" | "moonbeam-moonriver" | "rsk-mainnet" | "arbitrum-mainnet" | "palm-mainnet" | "klaytn-mainnet" | "heco-mainnet" | "nervos-godwoken-mainnet" | "axie-mainnet" | "evmos-mainnet" | "astar-mainnet" | "iotex-mainnet" | "harmony-mainnet" | "cronos-mainnet" | "aurora-mainnet" | "emerald-paratime-mainnet" | "boba-mainnet" | "eth-goerli" | "matic-mumbai" | "avalanche-testnet" | "bsc-testnet" | "moonbeam-moonbase-alpha" | "rsk-testnet" | "arbitrum-goerli" | "fantom-testnet" | "palm-testnet" | "heco-testnet" | "nervos-godwoken-testnet" | "evmos-testnet" | "astar-shiden" | "iotex-testnet" | "harmony-testnet" | "aurora-testnet" | "scroll-sepolia-testnet" | "covalent-internal-network-v1" | "defi-kingdoms-mainnet" | "swimmer-mainnet" | "boba-avalanche-mainnet" | "boba-bobabeam-mainnet" | "boba-bnb-mainnet" | "boba-rinkeby-testnet" | "boba-bobabase-testnet" | "boba-bnb-testnet" | "boba-avalanche-testnet" | "klaytn-testnet" | "gather-mainnet" | "gather-testnet" | "skale-calypso" | "skale-mainnet" | "skale-razor" | "avalanche-dexalot-mainnet" | "skale-omnus" | "avalanche-dexalot-testnet" | "astar-shibuya" | "cronos-testnet" | "defi-kingdoms-testnet" | "metis-mainnet" | "metis-stardust" | "milkomeda-a1-mainnet" | "milkomeda-a1-devnet" | "milkomeda-c1-mainnet" | "milkomeda-c1-devnet" | "swimmer-testnet" | "solana-mainnet" | "skale-europa" | "meter-mainnet" | "meter-testnet" | "skale-exorde" | "boba-goerli" | "neon-testnet" | "skale-staging-uum" | "skale-staging-lcc" | "arbitrum-nova-mainnet" | "canto-mainnet" | "bittorrent-mainnet" | "bittorrent-testnet" | "flarenetworks-flare-mainnet" | "flarenetworks-flare-testnet" | "flarenetworks-canary-mainnet" | "flarenetworks-canary-testnet" | "kcc-mainnet" | "kcc-testnet" | "polygon-zkevm-testnet" | "linea-testnet" | "base-testnet" | "mantle-testnet" | "scroll-alpha-testnet" | "oasys-mainnet" | "oasys-testnet" | "findora-mainnet" | "findora-forge-testnet" | "sx-mainnet" | "oasis-sapphire-mainnet" | "oasis-sapphire-testnet" | "optimism-goerli" | "polygon-zkevm-mainnet" | "horizen-yuma-testnet" | "clv-parachain" | "energi-mainnet" | "energi-testnet" | "horizen-gobi-testnet" | "eth-sepolia" | "skale-nebula" | "skale-battleground" | "avalanche-meld-testnet" | "gunzilla-testnet" | "ultron-mainnet" | "ultron-testnet" | "zora-mainnet" | "zora-testnet" | "neon-mainnet" | "avalanche-shrapnel-mainnet" | "base-mainnet" | "mantle-mainnet" | "avalanche-loco-legends-mainnet" | "linea-mainnet" | "horizen-eon-mainnet" | "avalanche-numbers" | "avalanche-dos" | "avalanche-step-network" | "avalanche-xplus" | "avalanche-xanachain" | "avalanche-meld-mainnet" | "opside-public-zkevm" | "opside-law-chain" | "avalanche-shrapnel-testnet" | "avalanche-loco-legends-testnet" | "opside-cb-zkevm" | "opside-pre-alpha-testnet" | "opside-era7" | "opside-xthrill" | "zksync-mainnet" | "metis-testnet" | "zksync-testnet" | "avalanche-blitz-testnet" | "avalanche-d-chain-testnet" | "avalanche-green-dot-testnet" | "avalanche-mintara-testnet" | "avalanche-beam-testnet" | "bnb-meta-apes-mainnet" | "bnb-antimatter-mainnet" | "bnb-antimatter-testnet" | "bnb-opbnb-testnet" | "opside-debox" | "opside-jackbot" | "opside-odx-zkevm-testnet" | "opside-readon-content-testnet" | "opside-relation" | "opside-soquest-zkevm" | "opside-vip3" | "opside-zkmeta" | "avalanche-pulsar-testnet" | "avalanche-uptn" | "bnb-fncy-mainnet" | "zetachain-testnet" | "kinto-testnet" | "mode-testnet" | "loot-mainnet" | "bnb-fncy-testnet" | "manta-testnet" | "pgn-mainnet" | "pgn-testnet" | "gnosis-mainnet" | "gnosis-testnet" | "rollux-mainnet" | "rollux-testnet" | "taiko-jolnir-testnet" | "optimism-sepolia" | "bnb-opbnb-mainnet" | "telos-mainnet" | "telos-testnet";
|
|
8
|
+
export type Chain = "btc-mainnet" | "eth-mainnet" | "matic-mainnet" | "bsc-mainnet" | "avalanche-mainnet" | "optimism-mainnet" | "fantom-mainnet" | "moonbeam-mainnet" | "moonbeam-moonriver" | "rsk-mainnet" | "arbitrum-mainnet" | "palm-mainnet" | "klaytn-mainnet" | "heco-mainnet" | "nervos-godwoken-mainnet" | "axie-mainnet" | "evmos-mainnet" | "astar-mainnet" | "iotex-mainnet" | "harmony-mainnet" | "cronos-mainnet" | "aurora-mainnet" | "emerald-paratime-mainnet" | "boba-mainnet" | "eth-goerli" | "matic-mumbai" | "avalanche-testnet" | "bsc-testnet" | "moonbeam-moonbase-alpha" | "rsk-testnet" | "arbitrum-goerli" | "fantom-testnet" | "palm-testnet" | "heco-testnet" | "nervos-godwoken-testnet" | "evmos-testnet" | "astar-shiden" | "iotex-testnet" | "harmony-testnet" | "aurora-testnet" | "scroll-l2-testnet" | "scroll-sepolia-testnet" | "covalent-internal-network-v1" | "defi-kingdoms-mainnet" | "swimmer-mainnet" | "boba-avalanche-mainnet" | "boba-bobabeam-mainnet" | "boba-bnb-mainnet" | "boba-rinkeby-testnet" | "boba-bobabase-testnet" | "boba-bnb-testnet" | "boba-avalanche-testnet" | "klaytn-testnet" | "gather-mainnet" | "gather-testnet" | "skale-calypso" | "skale-mainnet" | "skale-razor" | "avalanche-dexalot-mainnet" | "skale-omnus" | "avalanche-dexalot-testnet" | "astar-shibuya" | "cronos-testnet" | "defi-kingdoms-testnet" | "metis-mainnet" | "metis-stardust" | "milkomeda-a1-mainnet" | "milkomeda-a1-devnet" | "milkomeda-c1-mainnet" | "milkomeda-c1-devnet" | "swimmer-testnet" | "solana-mainnet" | "skale-europa" | "meter-mainnet" | "meter-testnet" | "skale-exorde" | "boba-goerli" | "neon-testnet" | "skale-staging-uum" | "skale-staging-lcc" | "arbitrum-nova-mainnet" | "canto-mainnet" | "bittorrent-mainnet" | "bittorrent-testnet" | "flarenetworks-flare-mainnet" | "flarenetworks-flare-testnet" | "flarenetworks-canary-mainnet" | "flarenetworks-canary-testnet" | "kcc-mainnet" | "kcc-testnet" | "polygon-zkevm-testnet" | "linea-testnet" | "base-testnet" | "mantle-testnet" | "scroll-alpha-testnet" | "oasys-mainnet" | "oasys-testnet" | "findora-mainnet" | "findora-forge-testnet" | "sx-mainnet" | "oasis-sapphire-mainnet" | "oasis-sapphire-testnet" | "optimism-goerli" | "polygon-zkevm-mainnet" | "horizen-yuma-testnet" | "clv-parachain" | "energi-mainnet" | "energi-testnet" | "horizen-gobi-testnet" | "eth-sepolia" | "skale-nebula" | "skale-battleground" | "avalanche-meld-testnet" | "gunzilla-testnet" | "ultron-mainnet" | "ultron-testnet" | "zora-mainnet" | "zora-testnet" | "neon-mainnet" | "avalanche-shrapnel-mainnet" | "base-mainnet" | "mantle-mainnet" | "avalanche-loco-legends-mainnet" | "linea-mainnet" | "horizen-eon-mainnet" | "avalanche-numbers" | "avalanche-dos" | "avalanche-step-network" | "avalanche-xplus" | "avalanche-xanachain" | "avalanche-meld-mainnet" | "opside-public-zkevm" | "opside-law-chain" | "avalanche-shrapnel-testnet" | "avalanche-loco-legends-testnet" | "opside-cb-zkevm" | "opside-pre-alpha-testnet" | "opside-era7" | "opside-xthrill" | "zksync-mainnet" | "metis-testnet" | "zksync-testnet" | "avalanche-blitz-testnet" | "avalanche-d-chain-testnet" | "avalanche-green-dot-testnet" | "avalanche-mintara-testnet" | "avalanche-beam-testnet" | "bnb-meta-apes-mainnet" | "bnb-antimatter-mainnet" | "bnb-antimatter-testnet" | "bnb-opbnb-testnet" | "opside-debox" | "opside-jackbot" | "opside-odx-zkevm-testnet" | "opside-readon-content-testnet" | "opside-relation" | "opside-soquest-zkevm" | "opside-vip3" | "opside-zkmeta" | "avalanche-pulsar-testnet" | "avalanche-uptn" | "bnb-fncy-mainnet" | "zetachain-testnet" | "kinto-testnet" | "mode-testnet" | "loot-mainnet" | "bnb-fncy-testnet" | "manta-testnet" | "pgn-mainnet" | "pgn-testnet" | "gnosis-mainnet" | "gnosis-testnet" | "rollux-mainnet" | "rollux-testnet" | "taiko-jolnir-testnet" | "optimism-sepolia" | "bnb-opbnb-mainnet" | "telos-mainnet" | "telos-testnet" | "avalanche-hubble-exchange-testnet" | "avalanche-miho-testnet" | "avalanche-bulletin-testnet" | "avalanche-kiwi-testnet" | "avalanche-hero-testnet" | "avalanche-avacloud-testnet" | "avalanche-thirdweb-testnet" | "avalanche-mondrian-testnet" | "avalanche-conduit-testnet" | "avalanche-nmac-testnet" | "avalanche-orderly-testnet" | "avalanche-amplify-testnet" | "avalanche-mirai-testnet" | "avalanche-wagmi-testnet" | "avalanche-playa3ull-testnet" | "avalanche-beam-mainnet" | "scroll-mainnet" | "eth-holesky";
|
|
9
9
|
export type Quote = "USD" | "CAD" | "EUR" | "SGD" | "INR" | "JPY" | "VND" | "CNY" | "KRW" | "RUB" | "TRY" | "NGN" | "ARS" | "AUD" | "CHF" | "GBP";
|
|
10
|
-
export declare const userAgent = "com.covalenthq.sdk.typescript/0.7.
|
|
10
|
+
export declare const userAgent = "com.covalenthq.sdk.typescript/0.7.3";
|
|
11
11
|
export declare class Response<T> {
|
|
12
12
|
data: T;
|
|
13
13
|
error: boolean;
|
|
@@ -6,7 +6,7 @@ import { PricingService } from "./PricingService";
|
|
|
6
6
|
import { TransactionService } from "./TransactionService";
|
|
7
7
|
import { XykService } from "./XykService";
|
|
8
8
|
import { ApiKeyValidator } from "../util/ApiKeyValidator";
|
|
9
|
-
export const userAgent = "com.covalenthq.sdk.typescript/0.7.
|
|
9
|
+
export const userAgent = "com.covalenthq.sdk.typescript/0.7.3";
|
|
10
10
|
export class Response {
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
@@ -431,6 +431,31 @@ declare class TransactionsResponse {
|
|
|
431
431
|
prev(): Promise<Response<TransactionsResponse>>;
|
|
432
432
|
next(): Promise<Response<TransactionsResponse>>;
|
|
433
433
|
}
|
|
434
|
+
declare class TransactionsTimeBucketResponse {
|
|
435
|
+
private _debug;
|
|
436
|
+
private _apiKey;
|
|
437
|
+
private _threadCount;
|
|
438
|
+
private _urlParams;
|
|
439
|
+
/** * The requested address. */
|
|
440
|
+
address: string;
|
|
441
|
+
/** * The timestamp when the response was generated. Useful to show data staleness to users. */
|
|
442
|
+
updated_at: Date;
|
|
443
|
+
/** * The requested quote currency eg: `USD`. */
|
|
444
|
+
quote_currency: string;
|
|
445
|
+
/** * The requested chain ID eg: `1`. */
|
|
446
|
+
chain_id: number;
|
|
447
|
+
/** * The requested chain name eg: `eth-mainnet`. */
|
|
448
|
+
chain_name: string;
|
|
449
|
+
complete: boolean;
|
|
450
|
+
/** * The current bucket of the response. */
|
|
451
|
+
current_bucket: number;
|
|
452
|
+
links: PaginationLinks;
|
|
453
|
+
/** * List of response items. */
|
|
454
|
+
items: Transaction[];
|
|
455
|
+
constructor(data: TransactionsTimeBucketResponse, _debug: boolean, _apiKey: string, _threadCount: number, _urlParams: URLSearchParams);
|
|
456
|
+
prev(): Promise<Response<TransactionsTimeBucketResponse>>;
|
|
457
|
+
next(): Promise<Response<TransactionsTimeBucketResponse>>;
|
|
458
|
+
}
|
|
434
459
|
export interface GetTransactionQueryParamOpts {
|
|
435
460
|
/** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */
|
|
436
461
|
quoteCurrency?: Quote;
|
|
@@ -473,6 +498,14 @@ export interface GetTransactionsForAddressV3QueryParamOpts {
|
|
|
473
498
|
/** * Include safe details. */
|
|
474
499
|
withSafe?: boolean;
|
|
475
500
|
}
|
|
501
|
+
export interface GetTimeBucketTransactionsForAddressQueryParamOpts {
|
|
502
|
+
/** * The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`. */
|
|
503
|
+
quoteCurrency?: Quote;
|
|
504
|
+
/** * Omit log events. */
|
|
505
|
+
noLogs?: boolean;
|
|
506
|
+
/** * Include safe details. */
|
|
507
|
+
withSafe?: boolean;
|
|
508
|
+
}
|
|
476
509
|
export declare class TransactionService {
|
|
477
510
|
private apiKey;
|
|
478
511
|
private debug;
|
|
@@ -559,5 +592,17 @@ export declare class TransactionService {
|
|
|
559
592
|
*
|
|
560
593
|
*/
|
|
561
594
|
getTransactionsForAddressV3(chainName: Chain | Chains, walletAddress: string, page: number, queryParamOpts?: GetTransactionsForAddressV3QueryParamOpts): Promise<Response<TransactionsResponse>>;
|
|
595
|
+
/**
|
|
596
|
+
*
|
|
597
|
+
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
598
|
+
* @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
599
|
+
* @param {number} timeBucket - The 0-indexed 15-minute time bucket. E.g. 27 Feb 2023 05:23 GMT = 1677475383 (Unix time). 1677475383/900=1863861 timeBucket.
|
|
600
|
+
* @param {GetTimeBucketTransactionsForAddressQueryParamOpts} queryParamOpts
|
|
601
|
+
* - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.
|
|
602
|
+
* - `noLogs`: Omit log events.
|
|
603
|
+
* - `withSafe`: Include safe details.
|
|
604
|
+
*
|
|
605
|
+
*/
|
|
606
|
+
getTimeBucketTransactionsForAddress(chainName: Chain | Chains, walletAddress: string, timeBucket: number, queryParamOpts?: GetTimeBucketTransactionsForAddressQueryParamOpts): Promise<Response<TransactionsTimeBucketResponse>>;
|
|
562
607
|
}
|
|
563
608
|
export {};
|
|
@@ -550,6 +550,155 @@ class TransactionsResponse {
|
|
|
550
550
|
}
|
|
551
551
|
}
|
|
552
552
|
}
|
|
553
|
+
class TransactionsTimeBucketResponse {
|
|
554
|
+
constructor(data, _debug, _apiKey, _threadCount, _urlParams) {
|
|
555
|
+
this._debug = _debug;
|
|
556
|
+
this._apiKey = _apiKey;
|
|
557
|
+
this._threadCount = _threadCount;
|
|
558
|
+
this._urlParams = _urlParams;
|
|
559
|
+
this.address = data.address;
|
|
560
|
+
this.updated_at = data.updated_at && data.updated_at !== null ? parseISO(data.updated_at.toString()) : null;
|
|
561
|
+
this.quote_currency = data.quote_currency;
|
|
562
|
+
this.chain_id = data.chain_id;
|
|
563
|
+
this.chain_name = data.chain_name;
|
|
564
|
+
this.complete = data.complete;
|
|
565
|
+
this.current_bucket = data.current_bucket;
|
|
566
|
+
this.links = data.links && data.links !== null ? new PaginationLinks(data.links) : null;
|
|
567
|
+
this.items = data.items && data.items !== null ? data.items.map((itemData) => new Transaction(itemData)) : null;
|
|
568
|
+
}
|
|
569
|
+
async prev() {
|
|
570
|
+
let success = false;
|
|
571
|
+
let data;
|
|
572
|
+
let response;
|
|
573
|
+
const backoff = new ExponentialBackoff(this._apiKey, this._debug);
|
|
574
|
+
const LIMIT = pLimit(this._threadCount);
|
|
575
|
+
while (!success) {
|
|
576
|
+
try {
|
|
577
|
+
let startTime;
|
|
578
|
+
if (this._debug) {
|
|
579
|
+
startTime = typeof performance !== 'undefined' ? performance.now() : process.hrtime();
|
|
580
|
+
}
|
|
581
|
+
if (this.links.prev === null) {
|
|
582
|
+
success = true;
|
|
583
|
+
return {
|
|
584
|
+
data: null,
|
|
585
|
+
error: true,
|
|
586
|
+
error_code: 400,
|
|
587
|
+
error_message: "Invalid URL: URL link cannot be null"
|
|
588
|
+
};
|
|
589
|
+
}
|
|
590
|
+
response = await LIMIT(() => fetch(`${this.links.prev}?${this._urlParams}`, {
|
|
591
|
+
headers: {
|
|
592
|
+
"Authorization": `Bearer ${this._apiKey}`,
|
|
593
|
+
"X-Requested-With": userAgent
|
|
594
|
+
}
|
|
595
|
+
}));
|
|
596
|
+
debugOutput(response.url, response.status ?? 429, startTime);
|
|
597
|
+
if (response.status === null || response.status === 429) {
|
|
598
|
+
try {
|
|
599
|
+
data = await LIMIT(() => backoff.backOff(response.url));
|
|
600
|
+
}
|
|
601
|
+
catch (error) {
|
|
602
|
+
success = true;
|
|
603
|
+
return {
|
|
604
|
+
data: null,
|
|
605
|
+
error: true,
|
|
606
|
+
error_code: response.status ?? 429,
|
|
607
|
+
error_message: error.message
|
|
608
|
+
};
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
else {
|
|
612
|
+
data = await response.json();
|
|
613
|
+
}
|
|
614
|
+
const dataClass = new TransactionsTimeBucketResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams);
|
|
615
|
+
checkAndModifyResponse(dataClass);
|
|
616
|
+
success = true;
|
|
617
|
+
return {
|
|
618
|
+
data: dataClass,
|
|
619
|
+
error: data.error,
|
|
620
|
+
error_code: data ? data.error_code : response.status,
|
|
621
|
+
error_message: data ? data.error_message : response.status === 500 ? "Internal server error" : "401 Authorization Required"
|
|
622
|
+
};
|
|
623
|
+
}
|
|
624
|
+
catch (error) {
|
|
625
|
+
success = true;
|
|
626
|
+
return {
|
|
627
|
+
data: null,
|
|
628
|
+
error: true,
|
|
629
|
+
error_code: data ? data.error_code : response.status,
|
|
630
|
+
error_message: data ? data.error_message : response.status === 500 ? "Internal server error" : "401 Authorization Required"
|
|
631
|
+
};
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
async next() {
|
|
636
|
+
let success = false;
|
|
637
|
+
let data;
|
|
638
|
+
let response;
|
|
639
|
+
const backoff = new ExponentialBackoff(this._apiKey, this._debug);
|
|
640
|
+
const LIMIT = pLimit(this._threadCount);
|
|
641
|
+
while (!success) {
|
|
642
|
+
try {
|
|
643
|
+
let startTime;
|
|
644
|
+
if (this._debug) {
|
|
645
|
+
startTime = typeof performance !== 'undefined' ? performance.now() : process.hrtime();
|
|
646
|
+
}
|
|
647
|
+
if (this.links.next === null) {
|
|
648
|
+
success = true;
|
|
649
|
+
return {
|
|
650
|
+
data: null,
|
|
651
|
+
error: true,
|
|
652
|
+
error_code: 400,
|
|
653
|
+
error_message: "Invalid URL: URL link cannot be null"
|
|
654
|
+
};
|
|
655
|
+
}
|
|
656
|
+
response = await LIMIT(() => fetch(`${this.links.next}?${this._urlParams}`, {
|
|
657
|
+
headers: {
|
|
658
|
+
"Authorization": `Bearer ${this._apiKey}`,
|
|
659
|
+
"X-Requested-With": userAgent
|
|
660
|
+
}
|
|
661
|
+
}));
|
|
662
|
+
debugOutput(response.url, response.status ?? 429, startTime);
|
|
663
|
+
if (response.status === null || response.status === 429) {
|
|
664
|
+
try {
|
|
665
|
+
data = await LIMIT(() => backoff.backOff(response.url));
|
|
666
|
+
}
|
|
667
|
+
catch (error) {
|
|
668
|
+
success = true;
|
|
669
|
+
return {
|
|
670
|
+
data: null,
|
|
671
|
+
error: true,
|
|
672
|
+
error_code: response.status ?? 429,
|
|
673
|
+
error_message: error.message
|
|
674
|
+
};
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
else {
|
|
678
|
+
data = await response.json();
|
|
679
|
+
}
|
|
680
|
+
const dataClass = new TransactionsTimeBucketResponse(data.data, this._debug, this._apiKey, this._threadCount, this._urlParams);
|
|
681
|
+
checkAndModifyResponse(dataClass);
|
|
682
|
+
success = true;
|
|
683
|
+
return {
|
|
684
|
+
data: dataClass,
|
|
685
|
+
error: data.error,
|
|
686
|
+
error_code: data ? data.error_code : response.status,
|
|
687
|
+
error_message: data ? data.error_message : response.status === 500 ? "Internal server error" : "401 Authorization Required"
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
catch (error) {
|
|
691
|
+
success = true;
|
|
692
|
+
return {
|
|
693
|
+
data: null,
|
|
694
|
+
error: true,
|
|
695
|
+
error_code: data ? data.error_code : response.status,
|
|
696
|
+
error_message: data ? data.error_message : response.status === 500 ? "Internal server error" : "401 Authorization Required"
|
|
697
|
+
};
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
}
|
|
553
702
|
/**
|
|
554
703
|
* Transactions APIs
|
|
555
704
|
*
|
|
@@ -1054,12 +1203,12 @@ export class TransactionService {
|
|
|
1054
1203
|
if (this.debug) {
|
|
1055
1204
|
startTime = typeof performance !== 'undefined' ? performance.now() : process.hrtime();
|
|
1056
1205
|
}
|
|
1057
|
-
response = await fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/page/${page}/?${urlParams}`, {
|
|
1206
|
+
response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/page/${page}/?${urlParams}`, {
|
|
1058
1207
|
headers: {
|
|
1059
1208
|
"Authorization": `Bearer ${this.apiKey}`,
|
|
1060
1209
|
"X-Requested-With": userAgent
|
|
1061
1210
|
}
|
|
1062
|
-
});
|
|
1211
|
+
}));
|
|
1063
1212
|
debugOutput(response.url, response.status ?? 429, startTime);
|
|
1064
1213
|
if (response.status === null || response.status === 429) {
|
|
1065
1214
|
try {
|
|
@@ -1099,5 +1248,90 @@ export class TransactionService {
|
|
|
1099
1248
|
}
|
|
1100
1249
|
}
|
|
1101
1250
|
}
|
|
1251
|
+
/**
|
|
1252
|
+
*
|
|
1253
|
+
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
1254
|
+
* @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
1255
|
+
* @param {number} timeBucket - The 0-indexed 15-minute time bucket. E.g. 27 Feb 2023 05:23 GMT = 1677475383 (Unix time). 1677475383/900=1863861 timeBucket.
|
|
1256
|
+
* @param {GetTimeBucketTransactionsForAddressQueryParamOpts} queryParamOpts
|
|
1257
|
+
* - `quoteCurrency`: The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.
|
|
1258
|
+
* - `noLogs`: Omit log events.
|
|
1259
|
+
* - `withSafe`: Include safe details.
|
|
1260
|
+
*
|
|
1261
|
+
*/
|
|
1262
|
+
async getTimeBucketTransactionsForAddress(chainName, walletAddress, timeBucket, queryParamOpts) {
|
|
1263
|
+
let success = false;
|
|
1264
|
+
let data;
|
|
1265
|
+
let response;
|
|
1266
|
+
const backoff = new ExponentialBackoff(this.apiKey, this.debug);
|
|
1267
|
+
while (!success) {
|
|
1268
|
+
try {
|
|
1269
|
+
const urlParams = new URLSearchParams();
|
|
1270
|
+
if (!this.is_key_valid) {
|
|
1271
|
+
return {
|
|
1272
|
+
data: null,
|
|
1273
|
+
error: true,
|
|
1274
|
+
error_code: 401,
|
|
1275
|
+
error_message: ApiKeyValidator.INVALID_API_KEY_MESSAGE
|
|
1276
|
+
};
|
|
1277
|
+
}
|
|
1278
|
+
if (queryParamOpts?.quoteCurrency !== undefined) {
|
|
1279
|
+
urlParams.append("quote-currency", queryParamOpts?.quoteCurrency.toString());
|
|
1280
|
+
}
|
|
1281
|
+
if (queryParamOpts?.noLogs !== undefined) {
|
|
1282
|
+
urlParams.append("no-logs", queryParamOpts?.noLogs.toString());
|
|
1283
|
+
}
|
|
1284
|
+
if (queryParamOpts?.withSafe !== undefined) {
|
|
1285
|
+
urlParams.append("with-safe", queryParamOpts?.withSafe.toString());
|
|
1286
|
+
}
|
|
1287
|
+
let startTime;
|
|
1288
|
+
if (this.debug) {
|
|
1289
|
+
startTime = typeof performance !== 'undefined' ? performance.now() : process.hrtime();
|
|
1290
|
+
}
|
|
1291
|
+
response = await this.LIMIT(() => fetch(`https://api.covalenthq.com/v1/${chainName}/bulk/transactions/${walletAddress}/${timeBucket}/?${urlParams}`, {
|
|
1292
|
+
headers: {
|
|
1293
|
+
"Authorization": `Bearer ${this.apiKey}`,
|
|
1294
|
+
"X-Requested-With": userAgent
|
|
1295
|
+
}
|
|
1296
|
+
}));
|
|
1297
|
+
debugOutput(response.url, response.status ?? 429, startTime);
|
|
1298
|
+
if (response.status === null || response.status === 429) {
|
|
1299
|
+
try {
|
|
1300
|
+
data = await this.LIMIT(() => backoff.backOff(response.url));
|
|
1301
|
+
}
|
|
1302
|
+
catch (error) {
|
|
1303
|
+
success = true;
|
|
1304
|
+
return {
|
|
1305
|
+
data: null,
|
|
1306
|
+
error: true,
|
|
1307
|
+
error_code: response.status ?? 429,
|
|
1308
|
+
error_message: error.message
|
|
1309
|
+
};
|
|
1310
|
+
}
|
|
1311
|
+
}
|
|
1312
|
+
else {
|
|
1313
|
+
data = await response.json();
|
|
1314
|
+
}
|
|
1315
|
+
const dataClass = new TransactionsTimeBucketResponse(data.data, this.debug, this.apiKey, this.threadCount, urlParams);
|
|
1316
|
+
checkAndModifyResponse(dataClass);
|
|
1317
|
+
success = true;
|
|
1318
|
+
return {
|
|
1319
|
+
data: dataClass,
|
|
1320
|
+
error: data.error,
|
|
1321
|
+
error_code: data ? data.error_code : response.status,
|
|
1322
|
+
error_message: data ? data.error_message : response.status === 500 ? "Internal server error" : "401 Authorization Required"
|
|
1323
|
+
};
|
|
1324
|
+
}
|
|
1325
|
+
catch (error) {
|
|
1326
|
+
success = true;
|
|
1327
|
+
return {
|
|
1328
|
+
data: null,
|
|
1329
|
+
error: true,
|
|
1330
|
+
error_code: data ? data.error_code : response.status,
|
|
1331
|
+
error_message: data ? data.error_message : response.status === 500 ? "Internal server error" : "401 Authorization Required"
|
|
1332
|
+
};
|
|
1333
|
+
}
|
|
1334
|
+
}
|
|
1335
|
+
}
|
|
1102
1336
|
}
|
|
1103
1337
|
//# sourceMappingURL=TransactionService.js.map
|