coinmarketcap-js
Version:
Javascript SDK for CoinMarketCap
243 lines (242 loc) • 6.19 kB
TypeScript
import ApiResponse from "./ApiResponse";
export interface CryptoClient {
idMap: (query?: IdMapQueryParams) => Promise<IdMapResponse>;
latestQuotes: (query?: LatestQuotesQueryParams) => Promise<LatestQuotesResponse>;
categories: (query?: CategoriesQueryParams) => Promise<CategoriesResponse>;
category: (query?: CategoryQueryParams) => Promise<CategoryResponse>;
info: (query?: InfoQueryParams) => Promise<InfoResponse>;
latestListings: (query?: LatestListingsQueryParams) => Promise<LatestListingsResponse>;
}
export interface QuoteData {
price: number;
volume24h: number;
volumeChange24h: number;
volume24hReported: number;
volume7d: number;
volume7dReported: number;
volume30d: number;
volume30dReported: number;
marketCap: number;
marketCapDominance: number;
fullyDilutedMarketCap: number;
percentChange1h: number;
percentChange24h: number;
percentChange7d: number;
percentChange30d: number;
lastUpdated: string;
}
export interface Platform {
id: number;
name: string;
symbol: string;
slug: string;
tokenAddress: string;
}
export declare type IdMapQueryParams = {
listingStatus?: string;
start?: number;
limit?: number;
sort?: "id" | "cmc_rank";
symbol?: string;
aux?: string;
};
export interface IdMap {
id: number;
rank: number;
name: string;
symbol: string;
slug: string;
isActive: number;
status: string;
firstHistoricalData: string;
lastHistoricalData: string;
platform: Platform;
}
export interface IdMapResponse extends ApiResponse<IdMap[]> {
}
export interface LatestQuotesQueryParams {
id?: string;
slug?: string;
symbol?: string;
convert?: string;
convertId?: string;
aux?: string;
skipInvalid?: boolean;
}
export interface LatestQuotes {
[k: string]: {
id: number;
name: string;
symbol: string;
slug: string;
isActive: number;
isFiat: number;
circulatingSupply: number;
totalSupply: number;
maxSupply: number;
dateAdded: string;
numMarketPairs: number;
cmcRank: number;
lastUpdated: string;
tags: string[];
platform: Platform;
selfReportedCirculatingSupply: number;
selfReportedMarketCap: number;
quote: {
[k: string]: QuoteData;
};
};
}
export interface LatestQuotesResponse extends ApiResponse<LatestQuotes> {
}
export interface CategoriesQueryParams {
start?: number;
limit?: number;
id?: string;
slug?: string;
symbol?: string;
}
export interface CategoriesData {
id: number;
name: string;
title: string;
description: string;
numTokens: number;
avgPriceChange: number;
marketCap: number;
marketCapChange: number;
volume: number;
volumeChange: number;
lastUpdated: number;
}
export interface CategoriesResponse extends ApiResponse<CategoriesData[]> {
}
export interface CategoryQueryParams {
id: string;
start?: number;
limit?: number;
convert?: string;
convertId?: string;
}
export interface Coin {
id: number;
name: string;
symbol: string;
slug: string;
cmcRank: number;
numMarketPairs: number;
circulatingSupply: number;
totalSupply: number;
marketCapByTotalSupply: number;
maxSupply: number;
lastUpdated: string;
dateAdded: string;
tags: string[];
}
export interface CategoryData extends CategoriesData {
coins: Coin[];
platform: Platform;
quote: {
[k: string]: {
price: number;
volume24h: number;
volume24hReported: number;
volume7d: number;
volume7dReported: number;
volume30d: number;
volume30dReported: number;
marketCap: number;
percentChange1h: number;
percentChange24h: number;
percentChange7d: number;
lastUpdated: string;
};
};
}
export interface CategoryResponse extends ApiResponse<CategoryData> {
}
export interface InfoQueryParams {
id?: string;
slug?: string;
symbol?: string;
address?: string;
aux?: string;
}
export interface Url {
website: string[];
technicalDoc: string[];
explorer: string[];
sourceCode: string[];
messageBoard: string[];
chat: string[];
announcement: string[];
reddit: string[];
twitter: string[];
}
export declare class Metadata {
id: number;
name: string;
symbol: string;
category: string;
slug: string;
logo: string;
description: string;
dateAdded: string;
dateLaunched: string;
notice: string;
tags: string[];
platform: Platform;
selfReportedCirculatingSupply: number;
selfReportedMarketCap: number;
selfReportedTags: string[];
urls: Url;
}
export interface InfoResponse extends ApiResponse<{
[k: string]: Metadata;
}> {
}
export interface LatestListingsQueryParams {
start?: number;
limit?: number;
priceMin?: number;
priceMax?: number;
marketCapMin?: number;
marketCapMax?: number;
volume24hMin?: number;
volume24hMax?: number;
circulatingSupplyMin?: number;
circulatingSupplyMax?: number;
percentChange24hMin?: number;
percentChange24hMax?: number;
convert?: string;
convertId?: string;
sort?: string;
sortDir?: "asc" | "desc";
cryptocurrencyType?: "all" | "coins" | "tokens";
tag?: "all" | "defi" | "filesharing";
aux?: string;
}
export interface LatestListingsData {
id: number;
name: string;
symbol: string;
slug: string;
cmcRank: string;
numMarketPairs: number;
circulatingSupply: number;
totalSupply: number;
marketCapByTotalSupply: number;
maxSupply: number;
lastUpdated: string;
dateAdded: string;
tags: string[];
selfReportedCirculatingSupply: number;
selfReportedMarketCap: number;
tvlRatio: number;
platform: Platform;
quote: QuoteData & {
tvl: number;
};
}
export interface LatestListingsResponse extends ApiResponse<LatestListingsData[]> {
}