// Generated by dts-bundle-generator v9.5.1

export type TimeSpanMonthly = {
	period: "monthly";
	years: ReadonlyArray<Year>;
	months: ReadonlyArray<Month>;
};
export type TimeSpanDaily = {
	period: "daily";
	years: ReadonlyArray<Year>;
	months: ReadonlyArray<Month>;
	days: ReadonlyArray<Day>;
};
export type TimeSpan = TimeSpanMonthly | TimeSpanDaily;
export type TimeSpans = ReadonlyArray<TimeSpan>;
/**
 * Trading pair [Symbol]-[Symbol]
 * @example 'BTC-BUSD | ETH-USDT | AVAX-BTC'
 * @link https://support.binance.us/hc/en-us/articles/360049417674-List-of-Supported-Assets
 */
export type TradingPair = `${string}-${string}`;
declare const YEARS: readonly [
	2017,
	2018,
	2019,
	2020,
	2021,
	2022,
	2023,
	2024
];
export type Year = (typeof YEARS)[number];
declare const MONTHS: readonly [
	1,
	2,
	3,
	4,
	5,
	6,
	7,
	8,
	9,
	10,
	11,
	12
];
export type Month = (typeof MONTHS)[number];
declare const DAYS: readonly [
	1,
	2,
	3,
	4,
	5,
	6,
	7,
	8,
	9,
	10,
	11,
	12,
	13,
	14,
	15,
	16,
	17,
	18,
	19,
	20,
	21,
	22,
	23,
	24,
	25,
	26,
	27,
	28,
	29,
	30,
	31
];
export type Day = (typeof DAYS)[number];
/**
 * Derivative contracts futures.
 */
export type DatasetBinanceFutures = DatasetBinanceFuturesDaily | DatasetBinanceFuturesMonthly;
export type DatasetBinanceFuturesBase = {
	asset: "futures";
	/**
	 * CM - COIN-M | UM - USDT-M
	 */
	futuresType: "cm" | "um";
	assetType: "aggTrades" | "bookTicker" | "fundingRate" | "indexPriceKlines" | "klines" | "markPriceKlines" | "premiumIndexKlines" | "trades";
	tradingPair: TradingPair;
};
export type DatasetBinanceFuturesDaily = DatasetBinanceFuturesBase & {
	period: "daily";
	timeSpans: ReadonlyArray<TimeSpanDaily>;
};
export type DatasetBinanceFuturesMonthly = DatasetBinanceFuturesBase & {
	period: "monthly";
	timeSpans: ReadonlyArray<TimeSpanMonthly>;
};
/**
 * Derivative contracts options.
 */
export type DatasetBinanceOption = {
	asset: "option";
	optionType: "bvol-index" | "eoh-summary";
	tradingPair: TradingPair;
	timeSpans: ReadonlyArray<TimeSpanDaily>;
};
export type DatasetBinanceSpotAggTrades = {
	asset: "spot";
	assetType: "aggTrades";
	tradingPair: TradingPair;
	timeSpans: TimeSpans;
};
export type DatasetBinanceSpotKlines = {
	asset: "spot";
	assetType: "klines";
	interval: "1s" | "1m" | "3m" | "5m" | "15m" | "30m" | "1h" | "2h" | "4h" | "6h" | "8h" | "12h" | "1d";
	tradingPair: TradingPair;
	timeSpans: TimeSpans;
};
export type DatasetBinanceSpotTrades = {
	asset: "spot";
	assetType: "trades";
	tradingPair: TradingPair;
	timeSpans: TimeSpans;
};
/**
 * Spot trades.
 * @link https://data.binance.vision/?prefix=data/spot/
 */
export type DatasetBinanceSpot = DatasetBinanceSpotAggTrades | DatasetBinanceSpotKlines | DatasetBinanceSpotTrades;
/**
 * Tradezap config for Binance provider.
 * @link https://www.binance.com
 */
export type TradezapConfigBinance = {
	provider: "binance";
	settings: SettingsBinance;
	datasets: DatasetsBinance;
};
export type SettingsBinance = {
	outputDirectory?: string;
	shouldUnzipDatasets?: boolean;
};
/**
 * Binance data provider
 * @link https://data.binance.vision/
 */
export type DatasetBinance = DatasetBinanceSpot | DatasetBinanceFutures | DatasetBinanceOption;
/**
 * Binance data provider
 * @link https://data.binance.vision/
 */
export type DatasetsBinance = ReadonlyArray<DatasetBinance>;
export type TradezapConfigProvider = TradezapConfigBinance;
export type TradezapConfig = ReadonlyArray<TradezapConfigProvider>;

export {};
