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

import { AxiosInstance } from 'axios';

export interface IBetslipItems {
	Add1: number | null;
	Add2: number | null;
	BetVarID: number;
	LinesID: number;
	HandSize: number | null;
	IsLive: boolean;
	Odds: number;
}
export interface IAddToBasket {
	eId: number;
	bId: number;
	r: number;
	fs: number | null;
	a1: number | null;
	a2: number | null;
	isLive: boolean;
}
export interface IRate {
	Rate: string;
	IsEnabled?: boolean;
	SignChange?: string;
	Id?: string;
	TID?: string;
	NameShort?: string;
	NameLong?: string;
	BN?: string;
	BetId?: number;
	AddToBasket?: IAddToBasket;
	S?: number;
	N?: number;
	TotalSize?: number;
	ForaSize?: number;
}
export interface IMainBet {
	Id: string;
	Caption?: string;
	Rates?: IRate[];
}
export interface IEventKeys {
	ID: number;
	LinesID: number;
	TurnirID: number;
	SportID: number;
}
export interface IEventsHeader {
	ExtraBetTypesCount: number;
	MainBets: IMainBet[];
	HomeTeamName: string;
	AwayTeamName: string;
	SportName: string;
	TourneyName: string;
	Comment: string;
	EventKeys: IEventKeys;
	Date: string;
	CountryId: number;
	PriceNum: number;
}
export interface GetPrematchTournament {
	EventsHeaders: IEventsHeader[];
	Id: number;
	Name: string;
}
export interface IRates {
	S: string;
	IsT: boolean;
	Caption: string;
	Id: string;
	Rates: IRate[];
	State: number;
	GroupName: string | null;
	Comment: string | null;
}
export interface IRospisGroup {
	Name: string;
	IsEnabled: boolean;
	State: number;
	Id: number;
	Rates: IRates[];
}
export interface IMinMatch {
	Minutes: number;
	Seconds: number;
	TotalMinutes: number;
}
export interface ILiveDescription {
	SportId: number;
	CountryId: number;
	TournamentId: number;
	LinesId: number;
	CommentId: null | string;
	PriceNum: number;
	Comment: string;
	Score: string;
	MinMatch: IMinMatch;
	Date: string;
	ServingTeam: number;
	NameTeam1: string;
	NameTeam2: string;
	TName: string;
	SportName: number;
}
export interface ILiveData {
	RospisGroups: IRospisGroup[];
	TimeStamp: null | string;
	Id: string;
	Status: number;
	CountRospis: number;
	State: number;
	Description: ILiveDescription;
	Statistic: string;
	ScoreStats: any[];
	TVChannels: any[];
	Markets: any[];
	LineArchive: null | string;
}
export interface ILiveDataResponce {
	ts: number;
	events: ILiveData[];
	isFullPackage: boolean;
	Error?: string | null;
}
export interface ISport {
	ID: number;
	Name: string;
	cnt?: number;
}
export interface ICountry {
	ID: number;
	Name: string;
	cnt?: number;
}
export interface ITournamentShort {
	sId: number;
	sName: string;
	cId: number;
	cName: string;
	Id: number;
	Name: string;
	cnt?: number;
	EventsHeaders?: IEventsHeader[];
}
export interface IChangePassword {
	mailSubject: string;
	userData: {
		UserId: number;
		OldPassword: string;
		NewPassword: string;
		/**
		 * offset from GMT in the format
		 * new Date().getTimezoneOffset() / 60
		 * @type {number}
		 */
		Gmt: number;
		/**
		 * Блять! Id Языка
		 * @type {number}
		 */
		Language: number;
	};
}
export interface ISearchEventsData {
	CountryId: number;
	Date: string;
	Id: number;
	Name: string;
	PriceNum: number;
	SportId: number;
	SportName: string;
	TournamentId: number;
	TournamentName: string;
	/**
	 * Types:
	 * * 0 = "Sport";
	 * * 1 = "Tournament";
	 * * 2 = "PrematchEvent";
	 * * 3 = "LiveEvent";
	 * @type {0|1|2|3}
	 */
	Type: 0 | 1 | 2 | 3;
	isLive: boolean;
	to: {
		name: string;
		params: {
			prEventId: string;
		};
	};
	t1: string;
	t2: string;
}
export interface IPayloadWithdrawal {
	/**
	 * ID платёжной системы (Кассир(5), WebMoney(2), Skrill(10))
	 * Всю информацию выяснять у программистов
	 * @type {number}
	 */
	psType: number;
	amount: string;
	/**
	 * Номер кошелька в случае
	 * вывода через кассира - номер кассы
	 * в случае вывода на карту - номер карты
	 * @type {string}
	 */
	purse: string;
	password: string;
	/**
	 * Хрень
	 */
	securityCode?: string;
	secAnswer?: string;
	additionalParams?: Record<string, any>;
}
export interface IPayloadCancelOrderedTransaction {
	transactionId: number;
	status: ETransactionInternalStatus;
}
/**
 * Represents the payload for retrieving account transactions.
 * "/account/GetAccountTransactions"
 */
export interface IGetMovementOfMoneyPayload {
	/**
	 * Start date format: DDMMYYYY
	 */
	begin: string;
	/**
	 * End date format: DDMMYYYY
	 */
	end: string;
	/**
	 * Transactions types:
	 */
	type: ETransactionType;
	/**
	 * Period types:
	 */
	periodType: EPeriodType;
	/**
	 * Number of page (default 0)
	 */
	page: number;
	/**
	 * Count items per page
	 */
	count: number;
	/**
	 * (optional) Added automatically in the API class
	 */
	culture?: string;
}
declare enum ETransactionInternalStatus {
	/** Пустой, значение по умолчанию для всех транзакций (0) */
	None = 0,
	/** Заказано на вывод, транзакция не обработана (1) */
	Ordered = 1,
	/** Транзакция подтверждена (разрешена) админом к выводу на кассе (2) */
	Confirmed = 2,
	/** Авто-отмена транзакции (нужна для отмены пользовательской транзакции и создания нового заказа) (3) */
	AutoReturned = 3,
	/** Авто-заказ денег на вывод (например, перезаказ на другую сумму) (4) */
	AutoOrdered = 4,
	/** Возвращено (отказ/отмена от выплаты) (5) */
	Returned = 5,
	/** Вывод денег пользователю (6) */
	Paid = 6,
	/** Подтвержденная транзакция отменена (7) */
	ConfirmedReturned = 7,
	/**
	 * Транзакция находится в ожидании
	 * (для платежки DengiOnline транзакция является подстверженной кассиром, но еще находится в ожидании подтверждения/отмены от платежной системы)
	 * можно использовать еще для банковских карточек, там ожидание от 3 до 5 рабочих дней
	 */
	Pending = 8
}
export type TGetUserBetsPayload = {
	/** Date format 'DDMMYYYY' */
	begin: string;
	/** Date format 'DDMMYYYY' */
	end: string;
	/** default: 0 */
	page: number;
	/** default: 500 */
	count: number;
	/** hardware: 0 */
	periodType: number;
	showLossBets: boolean;
	showWinBets: boolean;
	showWorkBets: boolean;
	culture?: string;
};
export type TGetGameFrameGoldenRacePayload = {
	/** Идентификатор игры. "gameId" Обязательный параметр. */
	game: number;
	/** URL, на который игра перенаправляет в случае неожиданной ошибки или используется для клиентских конфигураций, таких как URL лобби для мобильных игр. Обязательный параметр. */
	backurl: string;
	/** Режим игры: 0 для виртуального (fun) или 1 для реального (real). По умолчанию: 1. */
	mode: 0 | 1;
	/** Код языка в формате ISO 639-1 alpha-2 для загрузки локализации. По умолчанию: "en". */
	language: string | "en" | "fr" | "es" | "pt" | "tr";
	/** Платформа, с которой была запущена игра: "desktop" или "mobile". Укажите "mobile", если хотите открыть мобильный клиент игры. По умолчанию: "desktop". */
	clientPlatform: "desktop" | "mobile";
};
export type TGetGameListGoldenRacePayload = {
	platforms: "mobile" | "desktop" | "retail";
	gameTitle?: string;
	provider?: string[];
	type?: string;
	sub_type?: string;
};
export type TPlaceBetPayload = {
	betAmount: number;
	doAcceptOddsChanges: boolean;
	/**
	 * Should look something like this:
	 * `{
	 *    "4084082_132_1.5_null_null": true,
	 *    "4083927_39_null_276_null": true
	 * }`
	 */
	statuses: Record<string, boolean>;
	/**
	 * Is system (-1) or size of system (number)
	 * * (`-1`) not a system
	 * * (`system_size`) e.g. 3 events with 2 each, so we pass (2)
	 */
	systemIndex: number;
	/** Code for free bet */
	CodeFreeBet?: string | null;
	/** BetCode - Parent bet code. Applies to the Conditional bet. */
	BetCode?: string;
	/** BetId - Parent bet id. Applies to the Conditional bet. */
	BetId?: number;
};
export type TSignUpPayload = {
	/**
	 * UID Сайта партнера, например, "betbooster.win"
	 */
	PartnerSiteUid: string;
	FirstName?: string;
	MiddleName?: string;
	EmailOrPhone: string;
	/**
	 * @deprecated
	 * Устарело, неорбходимо использовать PointId
	*/
	CurrencyId?: number;
	/**
	 * Новое поле, которое обозначает ID кассы, которое определяет валюту
	 */
	PointId?: number;
	Password: string;
	PasswordRepeat: string;
	UrlRedirect?: string;
	/**
	 * Subject for e-mail
	 */
	EmailSubject?: string;
	/**
	 * e-mail text Body.
	 * Some text with {userHash}, and {userHash} can be in multiple places in {userHash} of this text.
	 * Instead of "{userHash}", the authorisation token must be substituted in all places.
	 */
	EmailBody?: string;
	EmailFrom?: string;
	ConfirmUrl?: string;
	Culture?: string;
};
export type TGetMovementOfMoney = {
	result: {
		income: boolean;
		sign: string;
		id: number;
		typeId: number;
		typeName: string;
		date: string;
		value: number;
		amount: number;
		bonus: number;
		balance: number;
	}[];
};
export interface TAddBetslip {
	culture: string;
	/** ID События */
	eId: number;
	/** ID Ставыки */
	bId: number;
	/** Коэфициент */
	r: number;
	/** Размер Форы или Тотала */
	fs: number | null;
	/** Доп. параметр */
	a1: number | null;
	/** Доп. параметр */
	a2: number | null;
	isLive: boolean;
	/** Used in addToBetslipV2 to determine the bet type */
	BetslipType?: number | null;
}
export interface TCouponEdited {
	BetId: number;
	DoAcceptOddsChanges: boolean;
	BetContentWeb: IBetContentWeb[];
	Culture: string;
}
export interface IBetContentWeb {
	BetContent: IOddsEdited;
	IdOldBet: number;
}
export interface IOddsEdited {
	Odds: number;
	LinesID: number;
	BetVarID: number;
	Add1: number;
	Add2: number;
	HandSize: number;
	IsBonus: boolean;
	IsLive: boolean;
}
export interface IUser {
	UserId?: number;
	[key: string]: string | number | null | boolean | object | undefined;
}
declare enum EFavoriteType {
	Tournament = 0,
	Event = 1,
	LiveEvent = 2,
	LineEvent = 3,
	None = 4
}
declare enum EPaymentSystemTypeEnum {
	/** Не указана платёжная система */
	None = 0,
	/** Ручной ввод/вывод денег */
	Manual = 1,
	/** Система WebMoney */
	WebMoney = 2,
	/** SmsProxy */
	SmsProxy = 3,
	/** Ваучеры */
	Voucher = 4,
	/** Ввод/вывод денег через кассу */
	Cashier = 5,
	/** Система LiqPay */
	LiqPay = 6,
	/** Не поддерживаем */
	UnSupported = 7,
	/** OSMP system */
	Osmp = 8,
	/** ePay system */
	EPay = 9,
	/** MoneyBookers */
	MoneyBookers = 10,
	/** PayPal */
	PayPal = 11,
	/** MegaPay */
	MegaPay = 12,
	/** Tandem */
	Tandem = 13,
	/** TelCell */
	TelCell = 14,
	/** WalletOne */
	WalletOne = 15,
	/** OkPay */
	OkPay = 16,
	/** EDram */
	EDram = 17,
	/** ArCa */
	ArCa = 18,
	/** TotoCards */
	ScratchCardsToto = 19,
	/** bonus for register */
	AccountBonus = 20,
	/** Pay2pay */
	Pay2Pay = 21,
	/** InterKassa */
	InterKassa = 22,
	/** AlliedWallet Custom Pay(Bank cards) */
	AlliedWallet = 23,
	/** Terminal kz system */
	CyberPlat = 24,
	/** EasyPay */
	EasyPay = 25,
	/** Terminal kz system */
	Altel = 26,
	/** Партнер Нижний Новгород */
	PartnerNN = 27,
	/** BetsStore скачки */
	BetsstoreHorseRace = 28,
	/** BetsStore ставки */
	BetsstoreBets = 29,
	/** BetsStore бонусы */
	BetsstoreBonus = 30,
	/** www.dengionline.com */
	DengiOnline = 31,
	/** DengiOnlineLiqPay */
	DengiOnlineLiqPay = 32,
	/** DengiOnlineIPayMTS */
	DengiOnlineIPayMTS = 33,
	/** DengiOnlineIPayLife */
	DengiOnlineIPayLife = 34,
	/** DengiOnlineQiwi */
	DengiOnlineQiwi = 35,
	/** Golden Race */
	GoldenRace = 44,
	/** qiwi */
	QiWi = 45,
	/** beeline */
	Beeline = 46,
	/** PayTrio */
	PayTrio = 47,
	/** FcPay */
	FcPay = 48,
	/** слоты http://flashslots.s3.amazonaws.com */
	FlashSlots = 49,
	/** XProGamingCasino */
	XProGamingCasino = 50,
	/** BetsStore Kassa24 */
	BetsstoreKassa24 = 51,
	/** BetsStore Wooppay */
	BetsstoreWooppay = 52,
	/** map attack bets */
	MapAttackBets = 53
}
declare enum EBetslipType {
	Ordinar = 0,
	Express = 1,
	System = 2
}
declare enum ETransactionType {
	/** (default) all without internal; */
	AllWithoutInternal = 0,
	/** external deposit */
	ExternalDeposit = 1,
	/** external withdraw */
	ExternalWithdraw = 1,
	/** internal win bets */
	InternalWinBets = 3,
	/** Internal loss bets */
	InternalLossBets = 4,
	/** Internal bets in work */
	InternalBetsInWork = 5
}
export type TBetslipSettings = {
	UserId: number;
	IsOneClick: boolean;
	OneClickAmount: number;
	IsAgreeChangeUp: boolean;
	IsAgreeChangeDown: boolean;
	IsAgreeChangeTotal: boolean;
	IsDeleteCupons: boolean;
	DeleteCuponsTime: number;
	FavAmount1: number;
	FavAmount2: number;
	FavAmount3: number;
};
export type TPersonalData = {
	Country: string;
	TimeZone: string;
	PostalCode: string;
	Region: string;
	City: string;
	Address: string;
	Phone: string;
	Email: string;
	Image: string;
	[key: string]: string;
};
declare enum EPeriodType {
	/** Не определено (используется для выбора даты) */
	None = 0,
	/** За сегодня */
	Today = 1,
	/** За вчера */
	Yesterday = 2,
	/** За последние 7 дней */
	Last7Days = 3,
	/** За последние 14 дней */
	Last14Days = 4,
	/** За последние 30 дней */
	Last30Days = 5,
	/** За последние 2 дня */
	Last2Days = 6,
	/** За последнюю неделю */
	LastWeek = 7,
	/** За сутки(с начальной даты) */
	SelectedDate = 8
}
export interface IResponseData<T> {
	data: T;
	status: number;
	statusText: string;
	error?: string | null;
}
export interface IApiResponse<T = any> {
	Data: T;
	Ok: boolean;
	Error: string;
}
export interface IIntgrGetGamesListPayload {
	/** Suppliers */
	suppliers?: number[];
	/** Group ID to which the site is linked */
	groupId: number;
	/** Specific games */
	games?: string[];
	/** String to search games by name */
	searchName?: string;
	/** List of providers */
	providers?: {
		Name: string;
		CountGames: number;
	}[];
	/** List of game types */
	types?: string[];
	/** Platform (e.g., mobile, desktop) */
	platforms: "mobile" | "desktop";
	/** Maximum number of items */
	maxItems?: number;
}
export interface IIntgrInitGamePayload {
	/** ID of the integrator partner  SQ:2, SI:1, CH:?, PP:?  */
	suppliers: number;
	gameid: number | string;
	/** url to which the page is returned after the game is closed */
	backurl: string;
	/** Game mode: 0 for virtual (fun) or 1 for real (real). Default: 1. */
	mode: number;
	/** Language code in ISO 639-1 alpha-2 format for downloading localisation. Default: "en". */
	language: string;
	/** The platform from which the game was launched: "desktop" or "mobile". Specify "mobile" if you want to open the mobile client of the game. Default: "desktop". */
	clientPlatform: "mobile" | "desktop" | "retail";
}
export interface RedisPrematchSearchParams {
	locale?: string;
	searchString?: string | null;
	negativeString?: string | null;
	sportId?: number | null;
	tournamentId?: number | null;
	LIMIT?: {
		from: number;
		size: number;
	} | null;
}
/**
 * Represents a value that can be used as a parameter in Redis search operations.
 *
 * @remarks
 * This type union allows for flexible parameter handling in Redis search queries,
 * supporting single values, arrays of values, or null/undefined states.
 *
 * @example
 * ```typescript
 * const stringParam: RedisSearchParamValue = "user123";
 * const numberParam: RedisSearchParamValue = 42;
 * const arrayParam: RedisSearchParamValue = ["tag1", "tag2", 100];
 * const nullParam: RedisSearchParamValue = null;
 * ```
 */
export type RedisSearchParamValue = string | number | (string | number)[] | null | undefined;
/**
 * Options for sorting Redis data structures.
 *
 * @remarks
 * When defined, specifies the field to sort by and the sort direction.
 * Can be null or undefined to indicate no sorting should be applied.
 *
 * @example
 * ```typescript
 * const sortOptions: RedisSortOptions = {
 *   BY: 'score',
 *   DIRECTION: 'DESC'
 * };
 * ```
 */
export type RedisSortOptions = {
	BY: string;
	DIRECTION: "ASC" | "DESC";
} | null | undefined;
/**
 * Type definition for Redis search parameters used to query prematch event IDs.
 *
 * @remarks
 * This type defines the structure for search parameters when querying Redis for prematch events.
 * All search parameters except locale are optional and can be used to filter results.
 *
 * @example
 * ```typescript
 * const searchParams: TRedisSearchPrematchIds = {
 *   locale: 'en',
 *   sportId: 1,
 *   countryId: 'US',
 *   LIMIT: { from: 0, size: 50 }
 * };
 * ```
 */
export type TRedisSearchPrematchIds = {
	locale: string;
	sportId?: RedisSearchParamValue;
	countryId?: RedisSearchParamValue;
	tournamentId?: RedisSearchParamValue;
	teams?: RedisSearchParamValue;
	LIMIT?: {
		from: number;
		size: number;
	} | null;
	SORT?: RedisSortOptions;
};
/**
 * Type definition for Redis dictionary aggregation parameters.
 * Used to retrieve aggregated dictionary data (sports, countries, or tournaments) with counts.
 *
 * @remarks
 * Endpoint: `/stats/pm/dictionary` (NV20 API)
 * This type uses FT.AGGREGATE command to group and count items by specified dictionary type.
 *
 * @property locale - Language locale code for filtering results
 * @property sportId - Sport ID(s) to include in search
 * @property countryId - Country ID(s) to include in search
 * @property tournamentId - Tournament ID(s) to include in search
 * @property dictionary - Dictionary type to group by ('sport' | 'country' | 'tournament')
 * @property notsport - Sport ID(s) to exclude from search
 * @property notcountry - Country ID(s) to exclude from search
 * @property nottournament - Tournament ID(s) to exclude from search
 * @property LIMIT - Maximum number of results to return
 * @property minTime - Minimum time filter for events (Windows timestamp)
 * @property maxTime - Maximum time filter for events (Windows timestamp)
 *
 * @example
 * ```typescript
 * // Get sport dictionary with counts
 * const sportDict: TRedisDictionary = {
 *   locale: 'en',
 *   dictionary: 'sport',
 *   LIMIT: { from: 0, size: 10 },
 *   minTime: 1640995200,
 *   maxTime: 1641081600
 * };
 *
 * // Get country dictionary excluding specific sports
 * const countryDict: TRedisDictionary = {
 *   locale: 'ru',
 *   dictionary: 'country',
 *   notsport: [1, 2, 3],
 *   LIMIT: { from: 0, size: 50 }
 * };
 *
 * // Get tournament dictionary for specific sport and country
 * const tournamentDict: TRedisDictionary = {
 *   locale: 'en',
 *   dictionary: 'tournament',
 *   sportId: [1],
 *   countryId: [225],
 *   LIMIT: { from: 0, size: 100 }
 * };
 * ```
 */
export type RedisDictionaryParams = {
	locale?: string;
	sportId?: RedisSearchParamValue;
	countryId?: RedisSearchParamValue;
	tournamentId?: RedisSearchParamValue;
	dictionary: "sport" | "country" | "tournament";
	notsport?: RedisSearchParamValue;
	notcountry?: RedisSearchParamValue;
	nottournament?: RedisSearchParamValue;
	LIMIT?: {
		from: number;
		size: number;
	} | null;
	minTime?: number;
	maxTime?: number;
	/** Применяется только для справочников  */
	minutes?: number;
};
export declare function routeNameId(id: number | string, text?: string): string;
export declare function clearPhone(draftPhoneNumber: number | string, prefix?: string, suffix?: string): string;
export declare class BetBoosterApi {
	private _baseUrl;
	private _srv_tag;
	/**
	 * A clean superagent instance that can be used for http requests
	 */
	axi: AxiosInstance;
	private _locale;
	private _locales;
	private _languageIdsRemote;
	private EXIST_LANGUAGES;
	private _languageId;
	private _lang;
	private _TOKEN?;
	private _USER_DATA;
	private LANG_DEFAULT;
	private LOCALE_DEFAULT;
	private LANG_ID_DEFAULT;
	private maxTimeExecutionMs;
	liveTimestamp: string | number;
	private _liveTimestampReset;
	liveRecivedIsFullPackage?: boolean;
	isNotActive?: boolean;
	/** Приоритетные виды спорта для сортировки и отображения на странице [VidSportaRating]*/
	primarySports: number[];
	/** Приоритетные страны по видам спорта для сортировки и отображения */
	priorityCountries: Record<string, number[]>;
	/** Приоритетные турниры по видам спорта*/
	priorityTournaments: Record<string, number[]>;
	/**
	 * Represents the BetBoosterApi class.
	 * @constructor
	 * @param {AxiosInstance} axiosInstance - The Axios instance to be used for making HTTP requests. Aka axios.create()
	 * @param {string} baseUrl - The base URL of the API.
	 * @param {string} [lang='en'] - The language to be used for API requests. Defaults to 'en'.
	 * @param {number} [maxTimeExecutionMs=15000] - The maximum time allowed for API request execution in milliseconds. Defaults to 15000.
	 * @param {boolean} [isDev=false] - Indicates whether the API is running in development mode. Defaults to false.
	 */
	constructor(axiosInstance: AxiosInstance, baseUrl: string, lang?: string, maxTimeExecutionMs?: number, isDev?: boolean);
	get locale(): string;
	get isSinged(): boolean;
	get user(): IUser;
	get userMain(): string[];
	set user(value: IUser);
	get lang(): string;
	get languageId(): number;
	get srvTag(): string | number;
	set srvTag(value: string | number);
	setServerTag(value: string | number): void;
	get token(): string | undefined;
	set token(value: string | undefined);
	/**
	 * Processes the response data and returns an object with data, error, status and status text.
	 *
	 * @template T - Тип данных, возвращаемых в поле `data`.
	 * @param {any} rawData - Сырые данные ответа.
	 * @param {number} status - HTTP статус ответа.
	 * @param {string} statusText - Текст статуса HTTP ответа.
	 * @returns {{ data: T, error: string | null, status: number, statusText: string }} Объект, содержащий данные ответа, ошибку, статус и текст статуса.
	 */
	responseHandlerData<T = any | null>(rawData: any, status: number, statusText: string): {
		data: T | null;
		error: string | null;
		status: number;
		statusText: string;
	};
	/**
	 * Processes the response data and returns an object with data, error, status and status text.
	 * Same as `this.responseHandlerData` only corrects the nesting of `Data.Data`
	 *
	 * @template T - Тип данных, возвращаемых в поле `data`.
	 * @param {any} rawData - Сырые данные ответа.
	 * @param {number} status - HTTP статус ответа.
	 * @param {string} statusText - Текст статуса HTTP ответа.
	 * @returns {{ data: T, error: string | null, status: number, statusText: string }} Объект, содержащий данные ответа, ошибку, статус и текст статуса.
	 */
	responseHandlerDataData<T = any | null>(rawData: any, status: number, statusText: string): {
		data: T | null;
		error: string | null;
		status: number;
		statusText: string;
	};
	/**
	 * Converts rawData.Data.Data format to rawData.Data.data format
	 * Sometimes API returns a format that is difficult to process later.
	 * Therefore it is necessary to convert the format for proper data processing (responseHandlerData)
	 * @param rawData
	 * @returns
	 */
	private convertDataData;
	setDevMode(devMode?: boolean | undefined): void;
	/**
	 * Adds new locale keys and values to the existing locales.
	 * Updates the list of existing languages with any new language codes found in the provided data.
	 *
	 * @param localesData - An object mapping locale keys to their translations
	 * @example
	 * // Add new translations
	 * betBoosterApi.addLocalesConverters({
	 *   'en': 'en-US',
	 *   'fr': 'fr-FR'
	 * });
	 */
	addLocalesConverters(localesData: Record<string, string>): void;
	checkLanguage(lang?: string): string;
	/**
	 * Sets the language for the BetBooster API.
	 *
	 * @param {string} [lang='en'] - The language code to set. Defaults to 'en' if not provided.
	 * @returns {string} - The language code that was set.
	 * @example
	 * ```
	 * api.setLanguage('en');
	 * ```
	 * as result:
	 * lang='en';
	 * locale='en-US';
	 * languageId=1;
	 */
	setLanguage(lang?: string): string;
	/**
	 * Sets the language and locale for the remote API.
	 * @param lang Language (default 'en').
	 * @returns Returns true if the language and locale are successfully set, otherwise returns false.
	 */
	setLanguageRemoteLocale(lang?: string): Promise<any>;
	private setBaseUrl;
	private statusHandler;
	/**
	 * Query string handler. Replaces values
	 * * `null` на `'null'`
	 * * `false` на `'false'`
	 * * `true` на `'true'`
	 * * `undefined` на `''`
	 * @param queryStringData - queryString Record<string, any>
	 * @returns The processed data of the query string.
	 */
	private queryStringHandler;
	private responseHandler;
	/**
	 * Error Handler for Axios.
	 *
	 * @param error - AxiosError object.
	 * @returns An object with error data, including the status and text of the error.
	 */
	private axiosErrorHandler;
	/**
	 * Returns the URL for the specified API path and version.
	 *
	 * @param apiPath - API Pathway.
	 * @param apiVersion - API Version.
	 * @returns URL for the specified API path and version.
	 */
	private url;
	/**
	 * Сортирует данные по приоритету, указанному в массиве priorityIDs.
	 *
	 * @template T - Тип объектов в массиве данных
	 * @param {Array<T>} data - Массив объектов данных для сортировки.
	 * @param {Array<number|string>} priorityIDs - Массив приоритетных ID для сортировки.
	 * @param {keyof T} sortField - Поле объекта, по которому будет производиться сортировка.
	 * @returns {Array<T>} - Новый массив отсортированных данных.
	 *
	 * @example
	 * ```typescript
	 * interface Tournament {
	 *   Id: number;
	 *   Name: string;
	 *   SportID: number;
	 * }
	 *
	 * const tournaments: Tournament[] = [
	 *   { Id: 1, Name: 'Premier League', SportID: 5 },
	 *   { Id: 2, Name: 'La Liga', SportID: 5 },
	 *   { Id: 3, Name: 'Serie A', SportID: 5 }
	 * ];
	 *
	 * const sortedTournaments = api.sortDataByPriority(
	 *   tournaments,
	 *   [3, 1, 2],
	 *   'Id'
	 * );
	 * // Result: [Serie A, Premier League, La Liga]
	 * ```
	 */
	sortDataByPriority<T extends Record<string, any>>(data: T[], priorityIDs: Array<number | string>, sortField: keyof T): T[];
	/**
	 * Сортирует массив значений по приоритету, указанному в массиве priorityIDs.
	 *
	 * @template T - Тип элементов массива (number | string)
	 * @param {Array<T>} array - Массив значений для сортировки.
	 * @param {Array<T>} priorityIDs - Массив приоритетных ID для сортировки.
	 * @returns {Array<T>} - Новый массив отсортированных значений.
	 *
	 * @example
	 * ```typescript
	 * const sportIds = [1, 5, 3, 8, 2];
	 * const prioritySports = [5, 1, 3];
	 *
	 * const sortedSports = api.sortArrayByPriority(sportIds, prioritySports);
	 * // Result: [5, 1, 3, 8, 2]
	 * // Elements 5, 1, 3 are sorted by priority, others remain in original order
	 * ```
	 */
	sortArrayByPriority<T extends number | string>(array: T[], priorityIDs: T[]): T[];
	/**
	 * Executes an HTTP request with the specified parameters.
	 * @param url - The URL to execute the request.
	 * @returns An object that contains methods for configuring the request and executing the request.
	 */
	request(url: string): {
		/**
		 * Executes a query with the specified parameters.
		 * @param queryParams - Query Parameters.
		 * @returns An instance of BetBoosterOfficeApi class.
		 */
		query(queryParams?: Record<string, unknown> | object): any;
		/**
		  * Sets the headers of the request.Sets the headers of the request.
		  * @param headers - Query header object.
		  * @returns An instance of BetBoosterOfficeApi class.
		  */
		headers(headers?: Record<string, string>): any;
		deleteAllHeaders(): any;
		setTimeout(timeout?: number): any;
		/**
		 * Sets the method of the GET request.
		 * @returns An instance of BetBoosterOfficeApi class.
		 */
		GET(): any;
		/**
		 * Sets the POST request method.
		 * @param payload - The payload for the enquiry.
		 * @returns An instance of BetBoosterOfficeApi class.
		 */
		POST(payload?: Record<string, unknown> | object): any;
		/**
		 * Устанавливает метод запроса PUT и устанавливает тело запроса.
		 * @param payload - Данные, которые будут отправлены в теле запроса.
		 * @returns Экземпляр класса BetBoosterOfficeApi с установленным методом запроса PUT и телом запроса.
		 */
		PUT(payload?: Record<string, unknown> | object): any;
		/**
		 * Устанавливает метод запроса DELETE.
		 * @param payload Данные запроса в формате объекта или записи.
		 * @returns Экземпляр класса BetBoosterOfficeApi.
		 */
		DELETE(payload?: Record<string, unknown> | object): any;
		/**
		 * Выполняет запрос к API.
		 *
		 * @returns Объект, содержащий данные, статус и текст статуса ответа.
		 * ```
		 * { data, status, statusText }
		 * ```
		 */
		exec<T>(): Promise<IResponseData<T>>;
		/**
		  * Получает значение.
		  * @returns Промис, который разрешается с данными.
		  */
		value<T>(): Promise<void>;
	};
	/**
	 * Sends a GET request to the specified endpoint with optional query parameters and options.
	 * @param url - The endpoint to send the GET request to.
	 * @param queryParams - The query parameters to include in the request URL. Defaults to an empty object.
	 * @param headers - The options to include in the request. Defaults to an empty object.
	 * @returns A Promise that resolves to the response body of the GET request.
	 */
	GET(url: string, queryParams?: Record<string, unknown> | object, headers?: Record<string, string>): Promise<any>;
	POST(url: string, payload?: Record<string, unknown> | object, queryParams?: Record<string, unknown> | object, headers?: Record<string, string>): Promise<any>;
	DELETE(url: string, payload?: Record<string, unknown> | object, queryParams?: Record<string, unknown> | object, headers?: Record<string, string>): Promise<any>;
	PUT(url: string, payload?: Record<string, unknown> | object, queryParams?: Record<string, unknown> | object, headers?: Record<string, string>): Promise<any>;
	/**
	 * Returns the list of prematch sports
	 *
	 * @param minutes The number of minutes to consider for the data retrieval. Defaults to 0.
	 * @returns {Promise<Array<any>>} A promise that resolves to an array of line sports data.
	 * @deprecated - use this.getLineSportsMain();
	 */
	getLineSports(minutes?: number): Promise<ISport[]>;
	/**
	 * Retrieves the hot prematch events
	 * @returns {Promise<Array<any>>} A promise that resolves to an array of hot events.
	 */
	getHotEvents(): Promise<any[]>;
	/**
	 * Получает список стран для указанного идентификатора спорта.
	 * @param sportId - Идентификатор спорта.
	 * @param minutes - Опциональный параметр, количество минут.
	 * @returns Промис, который разрешается в массив объектов типа ICountry.
	 * @deprecated - use this.getCountriesListMain();
	 */
	getCountriesList(sportId: number, minutes?: number): Promise<ICountry[]>;
	/**
	 * Retrieves prematch tournaments based on the specified sport ID, country ID, and minutes.
	 * @param sportId - The ID of the sport.
	 * @param countryId - The ID of the country.
	 * @param minutes - The number of minutes ago for which data is to be retrieved.
	 * @returns A promise that resolves to an array of prematch tournaments.
	 * @deprecated - use this.getPrematchTournamentsMain();
	 */
	getPrematchTournaments(sportId: number | string, countryId: number | string, minutes?: number): Promise<GetPrematchTournament[]>;
	/**
	 * Retrieves prematch tournaments based on the specified sport ID and minutes.
	 * @param sportId - The ID of the sport.
	 * @param minutes - The number of minutes ago for which data is to be retrieved.
	 * @returns A filtered list of prematch tournaments.
	 */
	getPrematchTournamentsByMinutes(sportId?: number, minutes?: number): Promise<any>;
	/**
	 * Retrieves the headers of prematch tournaments based on the specified sport ID and minutes.
	 * @param sportId The ID of the sport. Defaults to 0 if not provided.
	 * @param minutes - The number of minutes ago for which data is to be retrieved.
	 * @returns A promise that resolves to an array of tournament headers.
	 */
	getPrematchTournamentsHeadersByMinutes(sportId: number | string, minutes?: number): Promise<ITournamentShort[]>;
	/**
	 * Retrieves prematch events based on the specified parameters.
	 * @param sportId - The ID of the sport.
	 * @param countryId - The ID of the country.
	 * @param tournamentId - The ID of the tournament.
	 * @param minutes - The number of minutes ago for which data is to be retrieved.
	 * @returns A Promise that resolves to an array of prematch events.
	 */
	getPrematchEvents(sportId: number, countryId: number, tournamentId: number, minutes: number): Promise<any>;
	/**
	 * Sets or resets the live timestamp reset flag.
	 *
	 * @param value - Whether to enable live timestamp reset. Defaults to true.
	 */
	liveTimestampReset(value?: boolean): void;
	/**
	   * Retrieves an array of live event headers with main bets.
	   * @description For interval request execution, the parameter ```this.liveTimestamp```
	   * stored in this class is used. After the request is executed, ```this.liveTimestamp```
	   * is updated from the response.
	   * @param requestFullEventsList - Flag indicating whether to request
	   * the full list of events or only changes since the previous request.
	   * @param events - Array of live event IDs. In this case, the selected live events are returned with all bets.
	   * @returns A promise that resolves to an array of live event data.
	   */
	getLive(requestFullEventsList?: boolean, events?: (number | string)[]): Promise<ILiveDataResponce>;
	/**
	   * Retrieves complete data on current live events without saving the timestamp.
	   * @returns A promise that resolves to an array of objects of type I.ILiveData.
	   */
	private getFullLiveWithoutSaveTimeStamp;
	/**
	 * Возвращает массив из одного полного лайв события со всеми ставками по ID .
	 * @param eventId - ID полного live события.
	 * @returns Массив с информацией о событии.
	 */
	getLiveEventsAndFullEvent(eventId: number | string): Promise<ILiveData[]>;
	/**
	 * Returns an array containing a single complete live event with all bets by ID.
	 * @param eventId - The ID of the complete live event.
	 * @returns An array with event information.
	 */
	getLiveEventFull(eventId: number | string): Promise<ILiveData>;
	/**
	 * Retrieves a pre-match event by its ID.
	 * @param eventId - The event identifier.
	 * @returns The pre-match event object.
	 */
	getEventPrematch(eventId: number | string): Promise<any>;
	verifyEmail(token: string): Promise<any>;
	/**
	  * Registers a new user.
	  * @param payload - Data for registration.
	  * @returns A promise that resolves with the registered user data.
	  * @example
	  * ```
	  * const payload = {
	  *     PartnerSiteUid: string;
	  *     FirstName?: string;
	  *     MiddleName?: string;
	  *     EmailOrPhone: string;
	  *     CurrencyId?: number;  // <- Refer to Swagger !!!
	  *     PointId?: number; // <- Refer to Swagger !!!
	  *     Password: string;
	  *     PasswordRepeat: string;
	  *     UrlRedirect?: string;
	  *     EmailSubject?: string;
	  *     EmailBody?: string;
	  *     EmailFrom?: string;
	  *     ConfirmUrl?: string;
	  *     Culture?: string;
	  * }
	  * ```
	  */
	signUp(payload: TSignUpPayload): Promise<any>;
	/**
	  * Registers a new user via email.
	  * ! NEW METHOD
	  * @param payload - Data for registration.
	  * @returns A promise that resolves with the registered user data.
	  * @example
	  * ```
	  * const payload = {
	  *     "FirstName": "string",
	  *     "MiddleName": "string",
	  *     "EmailOrPhone": "string",
	  *     "PointId": 0,  // <- Refer to Swagger !!!
	  *     "CurrencyId": 0,  // <- Refer to Swagger !!!
	  *     "Password": "string",
	  *     "PasswordRepeat": "string",
	  *     "Culture": "string",
	  *     "EmailSubject": "string",
	  *     "EmailFrom": "string",
	  *     "EmailBody": "string",
	  *     "PartnerSiteUid": "string"
	  * }
	  *
	  * ```
	  */
	signUpViaEmail(payload: TSignUpPayload): Promise<any>;
	/**
	  * Registers a new user directly in the database without confirmation.
	  * @param payload - Data for registration.
	  * @returns A promise that resolves with the registered user data.
	  * @deprecated use createInternetUser() method
	  * @example
	  * ```
	  * const payload = {
	  *    "FirstName": "string",
	  *    "MiddleName": "string",
	  *    "EmailOrPhone": "string",
	  *    "PointId": 0,  // <- Refer to Swagger !!!
	  *    "CurrencyId": 0,  // <- Refer to Swagger !!!
	  *    "Password": "string",
	  *    "PasswordRepeat": "string",
	  *    "Culture": "string",
	  *    "EmailSubject": "string",
	  *    "EmailFrom": "string",
	  *    "EmailBody": "string",
	  *    "PartnerSiteUid": "string"
	  * }
	  *
	  * ```
	  */
	signUpDirect(payload: TSignUpPayload): Promise<any>;
	/**
	 * Creates an internet user for the cash register directly in the database.
	 * @param payload - User registration parameters.
	 * @returns An object containing information about the result of the operation.
	 * @example
	 * const SignUpPayloadDirect: I.TSignUpPayload = {
	 *   PartnerSiteUid: "partner.win",
	 *   EmailOrPhone: "380671110000", // phone number without "+"
	 *   PointId: 85,  // <- Refer to Swagger !!!
	 *   CurrencyId: 85,  // <- Refer to Swagger !!!
	 *   Password: "Password",
	 *   PasswordRepeat: "Password",
	 * }
	 */
	createInternetUser(payload: TSignUpPayload): Promise<{
		created: boolean | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * get a list of sports for the period
	 * @param {string} from формат "DDMMYYYY"
	 * @param {string} to формат "DDMMYYYY"
	 * @returns
	 */
	getResultsSports(from: string, to: string): Promise<any>;
	/**
	 * Retrieves tournament results by sport ID.
	 * @param sportId - The sport identifier.
	 * @param from - The start date as a string.
	 * @param to - The end date as a string.
	 * @returns A list of tournament results.
	 */
	getResultsTournamentsBySportId(sportId: number | string, from: string, to: string): Promise<any>;
	/**
	 * Get results
	 * @param {*} sportId - The sport identifier.
	 * @param {*} countryId - The country identifier.
	 * @param {*} tournamentId - The tournament identifier.
	 * @param {*} from - The start date.
	 * @param {*} to - The end date.
	 * @returns The results.
	 */
	getResultsGrid(sportId: number | string, countryId: number | string, tournamentId: number | string, from: string, to: string): Promise<any>;
	/**
	 * Returns all games providers for the 21st game each
	 */
	getGamesProvidersTopGames(): Promise<any>;
	/**
	 * Retrieves the list of top game providers for games.
	 * @returns {Promise<Array<any>>} The list of top game providers.
	 */
	getGamesTopProviders(): Promise<Array<any>>;
	/**
	 * Retrieves the list of slots.
	 * @returns {Promise<Array<any>>} The list of slots.
	 */
	getSlotsList(): Promise<Array<any>>;
	/**
	 * Opens a session for Outcome slots
	 * @deprecated
	 * */
	createSlotOutcome(game_id: number | string): Promise<{}>;
	/**
	 * Creates a slotintegrator DEMO.
	 * @param model - The model containing the data for the slot integrator demo.
	 * @returns A Promise that resolves to the parsed JSON response from the server.
	 */
	createSlotIntegratorDemo(model: Record<string, unknown>): Promise<any>;
	/**
	 * Initiates SlotIntegrators REAL Game
	 * @example
	 * ```javascript
	  const model = {
		"game_uuid": "string",
		"player_id": "string",
		"player_name": "string",
		"currency": "string",
		"session_id": "string",
		"language": "string",
	  }
	 * ```
	*/
	createSlotIntegratorReal(model: Record<string, unknown>): Promise<any>;
	/** Возвращает список провайдеров с логотипами */
	getSlotIntegratorProvidersHeaders(): Promise<any>;
	/** Retrieves all games for a given slot integrator provider.
	 * @param {string} providerName - The name of the provider.
	 * @returns {Promise<Array>} - A promise that resolves to an array of games.
	 */
	getSlotIntegratorProviderAllGames(providerName: string): Promise<Array<any>>;
	/** Retrieves games by the given game name.
	 * @param {string} gameName - The name of the provider.
	 * @returns {Promise<Array>} - A promise that resolves to an array of games.
	 */
	getSlotIntegratorFilteredGames(gameName: string): Promise<Array<any>>;
	/**
	 * Asynchronously performs login.
	 * @description If the login is successful, saves the token in the class property `token`
	 * and saves the object representing the user in the class property `user`.
	 * These properties are subsequently used for processing requests.
	 * @param login - The user's login.
	 * @param password - The user's password.
	 * @returns An object representing the user if the login is successful. Otherwise, returns an empty object.
	 */
	login({ login, password }: {
		login: string;
		password: string;
	}): Promise<IUser>;
	/**
	  * Retrieves user data.
	  * @returns User data or null if the user is not found.
	  * @deprecated use this.getUserData()
	*/
	getUserData_OLD(): Promise<any>;
	getUserData(): Promise<{
		data: any;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * @deprecated use this.getUserData()
	 */
	getUserFullData(): Promise<{
		data: any;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Logs the user out of the system.
	 * @returns An object containing information about the success of the logout and the user's authorization status.
	 */
	logout(): Promise<{
		ok: boolean;
		isLogged: any;
	}>;
	/**
	 * Retrieves the user's balance.
	 * @returns A promise that resolves to the user's balance.
	 * @deprecated use this.getBalance();
	 */
	balance(): Promise<{
		Amount: number;
	} | {}>;
	getBalance(): Promise<{
		data: string | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Changes the user's password.
	 * @param postBody - An object containing the data for changing the password.
	 * @returns Returns `null` if the user is not authorized.
	 */
	changePassword(postBody: IChangePassword): Promise<{
		ok: boolean;
		status: any;
	}>;
	/**
	 * Converts a number to a GUID string.
	 * It is used in the "Sslotegrator"
	 * @param userId - The number to convert to a GUID.
	 * @returns The GUID string.
	 */
	longToGuid(userId: number): string;
	/**
	 * Retrieves sports events (live & prematch) based on the provided search text.
	 * @param searchText - The text to search for.
	 * @returns A promise that resolves to an array of ISearchEventsData.
	 */
	getSportsEventsSearch(searchText: string): Promise<ISearchEventsData[]>;
	/**
	 * Retrieves the favorites from the BetBooster API.
	 * @returns {Promise<any[]>} A promise that resolves to an array of favorites.
	 */
	getFavorites(): Promise<any>;
	/**
	 * Adds an item to the favorites list.
	 * @param id - The ID of the item to add.
	 * @param type - The type of the item to add. Types: 0 = "Tournament"; 1 = "Event"; 2 = "LiveEvent"; 3 = "LineEvent"; 4 = "None";
	 * @returns A promise that resolves to a boolean indicating whether the item was successfully added to the favorites list.
	 */
	addFavorite(id: number, type: EFavoriteType): Promise<boolean>;
	/**
	 * Removes a favorite item.
	 * @param favoriteId - The ID of the favorite item to be removed.
	 * @returns A promise that resolves to a boolean indicating whether the removal was successful.
	 */
	removeFavorite(favoriteId: number): Promise<boolean>;
	/**
	   * Retrieves the user's wallets.
	   * @param psType - The type of payment system (default is 5 - cashier).
	   * @returns The user's wallets.
	   */ getPurses(psType?: EPaymentSystemTypeEnum): Promise<any>;
	sendWithdrawal(apiPath: string, request: any): Promise<void>;
	/**
	 * Sends a withdrawal request to the cashier.
	 * @param payload - Parameters for the withdrawal request.
	 * @returns An object with the result of the withdrawal operation.
	 */
	sendWithdrawalAgent(payload: IPayloadWithdrawal): Promise<{
		ok: boolean;
		balance: number;
		userOrders: any;
		status?: undefined;
	} | {
		ok: boolean;
		status: any;
		balance?: undefined;
		userOrders?: undefined;
	}>;
	/**
	 * Cancels a requested withdrawal transaction.
	 * @param payload - Parameters for canceling the requested transaction.
	 * @returns An object with information about the success of the transaction cancellation and the user's balance.
	 */
	cancelOrderedTransaction(payload: IPayloadCancelOrderedTransaction): Promise<{
		ok: boolean;
		status: number;
		balance?: undefined;
		userOrders?: undefined;
	} | {
		ok: boolean;
		balance: number;
		userOrders: any;
		status?: undefined;
	}>;
	/**
	 * Obtains information on cash flow.
	 * @param payload - Query Parameters.
	 * @returns An object with the result of the query.
	 */
	getMovementOfMoney(payload: IGetMovementOfMoneyPayload): Promise<TGetMovementOfMoney>;
	/**
	  * Retrieves a list of ordered transactions.
	  *
	  * @returns Ordered transactions or an empty array if the user is not authorized.
	  */
	getOrderedTransactions(): Promise<any>;
	/**
	  * Retrieves the content of a bet by betId.
	  * @param betId - The bet identifier.
	  * @returns The content of the bet.
	  * @deprecated use getBetContentNew
	  */
	getBetContent(betId: number): Promise<any>;
	/**
	  * Retrieves the content of a bet by betId.
	  * @param betId - The bet identifier.
	  * @returns The content of the bet.
	  */
	getBetContentV2(betId: number): Promise<{}>;
	/**
	 * Retrieves user bets.
	 * @param payload - Request parameters.
	 * @returns A promise that resolves with the result of the request.
	 * @note The page size should not exceed 20 rows per page.
	 * @deprecated Use the getUserBetsV2 method.
	 */
	getUserBets(payload: TGetUserBetsPayload): Promise<any>;
	/**
	 * Retrieves user bets. Version 2
	 * @param payload - Request parameters.
	 * @returns A promise that resolves with the result of the request.
	 * @note The page size should not exceed 20 rows per page.
	 */
	getUserBetsV2(payload: TGetUserBetsPayload): Promise<{
		data: any;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Retrieves user bets.
	 * @param payload - Request parameters.
	 * @returns A promise that resolves with the result of the request.
	 * @note The page size should not exceed 20 rows per page.
	 * @deprecated Use the getUserBetsV2 method.
	 */
	getUserBets02(payload: TGetUserBetsPayload): Promise<{
		data: any;
		error: string | string[] | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Retrieves the odds data for editing based on the provided payload.
	 *
	 * @param payload - The extended bet slip information required to fetch odds for editing.
	 * @returns A promise that resolves to an object containing the data, any errors, and the HTTP response status information.
	 */
	getOddsForEdit(payload: TAddBetslip): Promise<{
		data: any;
		error: string | string[] | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Edits an existing coupon with the provided payload.
	 *
	 * @param payload - The coupon data to be edited, conforming to the `I.TCouponEdited` interface.
	 * @returns A promise that resolves to an object containing:
	 * - `data`: The response data from the API.
	 * - `error`: Any error messages returned by the API, either as a string or an array of strings. Can be `null` if no errors occurred.
	 * - `status`: The HTTP status code of the response.
	 * - `statusText`: The HTTP status text corresponding to the status code.
	 */
	placeCouponEdited(payload: TCouponEdited): Promise<{
		data: any;
		error: string | string[] | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Retrieves the cashout information for the specified user bets.
	 *
	 * @param BetIds - An array of bet IDs for which to check the cashout information.
	 * @returns A promise that resolves to an object containing the data, error, status, and statusText.
	 *          - data: The response data from the API.
	 *          - error: Any error message(s) returned by the API, or null if no errors occurred.
	 *          - status: The HTTP status code of the response.
	 *          - statusText: The HTTP status text of the response.
	 * @deprecated - use getUserBetsStatuses
	 */
	getUserBetsCashout(BetIds: number[]): Promise<{
		data: any;
		error: string | string[] | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Retrieves the cashout information for the specified user bets.
	 */
	getUserBetsStatuses(BetIds: number[]): Promise<{
		data: any;
		error: string | string[] | null;
		status: number;
		statusText: string;
	}>;
	cashoutHandler(): Promise<{
		data: any;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Processes a cashout return bet request.
	 * @param payload - The cashout bet parameters
	 * @param payload.betId - The ID of the bet to cash out
	 * @param payload.cashOutAmount - The amount to cash out
	 * @param payload.DoAcceptOddsChanges - Whether to accept odds changes
	 * @returns A promise containing response data, error information, HTTP status code and status text
	 * @returns {data} The response data from the API
	 * @returns {error} Error message(s) if any occurred, null otherwise
	 * @returns {status} HTTP status code
	 * @returns {statusText} HTTP status message
	 */
	returnCashoutBet(payload: {
		betId: number;
		cashOutAmount: number;
		DoAcceptOddsChanges: boolean;
	}): Promise<{
		data: any;
		error: string | string[] | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Creates a coupon for placing a bet.
	 * @param betslip - An array with information about the bets.
	 * @param amount - The bet amount.
	 * @param acceptChangeCoefs - A flag indicating whether to accept changes in coefficients.
	 * @param systemIndex - The size of the system (e.g., for 3 events with 2 combinations, pass 2). Default value: -1 (if not a system).
	 * @returns The created coupon for placing a bet.
	 */
	createCoupon(betslip: any[], amount: number, acceptCahngeCoefs: boolean, systemIndex?: number): TPlaceBetPayload;
	/**
	  * Places a bet.
	  * @param payload - Parameters for placing the bet.
	  * @returns The result of placing the bet.
	  */
	placeCoupon(payload: TPlaceBetPayload): Promise<any>;
	/**
	  * Places a Conditional bet.
	  * @param payload - Parameters for placing the bet.
	  * @returns The result of placing the bet.
	  */
	placeCouponConditional(payload: TPlaceBetPayload): Promise<{
		data: string | null;
		error: string | null;
		status: number;
		statusText: string;
	} | undefined>;
	/**
	  * Places a bet on behalf of BetShop.
	  * @param payload - Parameters for placing the bet.
	  * @returns The result of placing the bet.
	  */
	placeCouponBetShop(payload: TPlaceBetPayload): Promise<any>;
	/**
	  * Checks the status of a bet by coupon number.
	  * Used for BetShop when users try to check
	  * whether the bet won or lost.
	  * @param {string} couponCode - The coupon number.
	  * @returns The result of the bet.
	  */
	getBetShopCouponByCode(couponCode: string): Promise<{
		data: any;
		error: string | null;
		status: number;
		statusText: string;
	} | undefined>;
	/**
	 * Checks if a user with the specified login exists.
	 * @param login - The user's login.
	 * @returns A promise that resolves with the result of the check.
	 */
	loginIsExist(login: string): Promise<any>;
	/**
	 * Checks if the specified email exists in the system.
	 * @param email - The email to check.
	 * @returns A promise that resolves with the result of the check.
	 */
	emailIsExist(email: string): Promise<any>;
	/**
	 * Updates the user's personal data.
	 * @param personalData - An object containing the user's personal data.
	 * @returns Returns true if the data was successfully updated, otherwise returns false.
	 */
	changePersonalData(personalData: TPersonalData): Promise<boolean>;
	/**
	 * Retrieves all messages.
	 * @param page - The page number.
	 * @param pageSize - The page size.
	 * @returns An array of messages.
	 */
	getMessagesAll({ page, pageSize }: {
		page: number | string;
		pageSize: number | string;
	}): Promise<any>;
	/**
	 * Retrieves a message by its identifier.
	 * @param id - The message identifier.
	 * @returns The message object or an empty object if the message is not found.
	 */
	getMessageById(id: number): Promise<any>;
	/**
	  * Sends a message to a user.
	  * @param {Object} params - Parameters for sending the message.
	  * @param {number} params.ToUserId - The identifier of the user to whom the message is sent.
	  * @param {string} params.Text - The text of the message.
	  * @param {string} params.Subject - The subject of the message.
	  * @param {number} params.ParentId - The identifier of the parent message (if any).
	  * @returns {Promise<any>} - A promise that resolves with the result of sending the message or null if sending is not possible.
	  */
	sensMessage({ ToUserId, Text, Subject, ParentId }: {
		ToUserId: number;
		Text: string;
		Subject: string;
		ParentId: number;
	}): Promise<any>;
	/**
	  * Marks a message as read.
	  *
	  * @param {Object} params - Request parameters.
	  * @param {number} params.MessageId - The message identifier.
	  * @param {number} params.MessageTypeId - The message type identifier.
	  * @returns {Promise<any>} - A promise that resolves with the result of the request or null if the user is not authorized.
	  */
	markMessageAsRead({ MessageId, MessageTypeId }: {
		MessageId: number;
		MessageTypeId: number;
	}): Promise<any>;
	/**
	 * Deletes a message by the specified message ID and type.
	 * @param {Object} params - Parameters for deleting the message.
	 * @param {number} params.MessageId - The message identifier.
	 * @param {number} params.MessageTypeId - The message type identifier.
	 * @returns {Promise<{ Result: boolean; Id: number } | null>} - An object containing the result of the deletion and the ID of the deleted message, or null if the deletion failed.
	 */
	deleteMessage({ MessageId, MessageTypeId }: {
		MessageId: number;
		MessageTypeId: number;
	}): Promise<{
		Result: boolean;
		Id: number;
	} | null>;
	/**
	 * Deletes all messages.
	 * @returns A promise that resolves to true, false, or null.
	 */
	deleteMessagesAll(): Promise<true | false | null>;
	/**
	 * Retrieves the number of messages.
	 * @returns An object containing the count of all messages, mass messages, and personal messages.
	 * If the user is not authorized, returns null.
	 */
	getMessagesCount(): Promise<{
		All: number;
		Mass: number;
		Personal: number;
	} | null>;
	/**
	 * Retrieves the number of unread messages.
	 * @returns The number of unread messages or null if the user is not authorized.
	 */
	getMessagesUnreadCount(): Promise<number | null>;
	/** Checks if the user exists in the temporary table */
	isUserTempExist(userName: string): Promise<boolean | null>;
	/**
	 * Creates a user only in the temporary table.
	 */
	createUserTemp(payload: any): Promise<boolean | null>;
	/**
	 * Returns a list of GoldenRace games.
	 */
	getGamesListGR(payload?: TGetGameListGoldenRacePayload): Promise<{
		data: any[] | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Asynchronous method to get the GoldenRace game frame.
	 *
	 * @param payload - An object with parameters for the request.
	 * @param payload.game - The game identifier. gameId is a required parameter.
	 * @param payload.backurl - The URL to which the game redirects in case of an unexpected error or is used for client configurations such as the lobby URL for mobile games. Required parameter.
	 * @param payload.mode - The game mode: 0 for virtual (fun) or 1 for real. Default: 1.
	 * @param payload.language - The language code in ISO 639-1 alpha-2 format for loading localization. Default: "en".
	 * @param payload.clientPlatform - The platform from which the game was launched: "desktop" or "mobile". Specify "mobile" if you want to open the mobile client of the game. Default: "desktop".
	 * @param payload.group - The user group. In the configuration, this is essentially the cashier number. Required parameter.
	 * @returns An object with response data, error (if any), status, and status text.
	 */
	getGameFrameUrlGR(payload: TGetGameFrameGoldenRacePayload): Promise<{
		data: string | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	pingApi(): Promise<{
		data: IApiResponse<any> | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	intgrGetGamesList(payload: IIntgrGetGamesListPayload): Promise<{
		data: any[] | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	intgrGetGameTypes(groupId: number | string): Promise<{
		data: any[] | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	intgrGetProvidersList(groupId: number | string): Promise<{
		data: any[] | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	intgrGetTopGames(groupId: number | string): Promise<{
		data: any[] | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	intgrInitGame(payload: IIntgrInitGamePayload): Promise<{
		data: any[] | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	checkPromocode(promocode: string): Promise<void>;
	activatePromocode(promocode: any): Promise<void>;
	/**
	 * @example
	 * ```
	  const payload = {
		"isphone": this.typeLogin.phone,
		"login": clearLogin,
	  }
	 * ```
	 */
	sendSms(payload: {
		isphone: string;
		login: string;
	}): Promise<void>;
	signUpPhone(request: any): Promise<void>;
	passwordRecoveryRequest(post: any): Promise<void>;
	passwordRecoveryEmail(email: string): Promise<void>;
	passwordSetNewByPhone(request: any): Promise<void>;
	passwordSetNewByEmail(request: any): Promise<void>;
	signUpEmail(request: any): Promise<void>;
	getUserPersonalInfo(): Promise<void>;
	sendPayment(apiPath: string, request: any): Promise<void>;
	setUserPersonalInfo(request: any): Promise<void>;
	getGamesToken(sToken: any): Promise<void>;
	getProviderHedlines(providerHash: string): Promise<void>;
	createTempSignUp({ login, password }: {
		login: string;
		password: string;
	}): Promise<void>;
	setRemoteLanguage(lang?: string): Promise<any>;
	/**
	 * Converts bonuses to an array.
	 * @param bonus - An object containing bonuses.
	 * @returns An array of bonuses.
	 */
	convertBonuses(bonus: Record<string, any>): any[];
	/**
	 * Retrieves ticket information.
	 * @description Requires authorization.
	 * @returns {Promise<Betslip | null>} An object with ticket information or null if the token is not set.
	 * @example
	 * ```typescript
	  {
		BetslipType: 0,
		Bets: [],
		RecommendedAmount: 0,
		bonuses: [
		  [ 'Koef', 9, 1.01 ],
		  [ 'Koef', 20, 1.02 ],
		  [ 'Koef', 50, 1.03 ],
		  [ 'Koef', 100, 1.04 ],
		  [ 'Koef', 200, 1.05 ],
		  [ 'Koef', 500, 1.06 ],
		  [ 'Kolvo', 5, 1.01 ],
		  [ 'Kolvo', 9, 1.02 ],
		  [ 'Kolvo', 22, 1.03 ],
		  [ 'Kolvo', 11, 1.04 ],
		  [ 'Kolvo', 13, 1.05 ],
		  [ 'Kolvo', 15, 1.06 ],
		  [ 'Perestavka', true, 1.03 ],
		  [ 'MinOdds', true, 1.02 ]
		]
	  }
	  * ```
	  @deprecated
	  */
	getBetslip_OLD(): Promise<any>;
	getBetslip(): Promise<any>;
	/**
	 * Clears the bet slip.
	 * @returns A promise that resolves to a boolean indicating the success of the operation.
	 */
	clearBetslip(): Promise<boolean>;
	/**
	 * Changes the type of the bet slip.
	 * @param betslipType - The type of the bet slip.
	 * @returns Returns true if the bet slip type was successfully changed, otherwise returns false.
	 */
	changeBetslipType(betslipType: EBetslipType): Promise<boolean>;
	/**
	 * Sets the bet slip settings.
	 * @param betslipSettings - The bet slip settings.
	 * @returns An array of results or an empty array if the user is not authorized.
	 * @deprecated
	 */
	setBetslipSettings(betslipSettings: TBetslipSettings): Promise<any>;
	/**
	 * Adds a bet to the bet slip.
	 * @param basket - The basket containing bet information.
	 * @returns The result of the add operation to the bet slip or null if the operation failed.
	 *
	 * @deprecated use addToBetslipV2
	 *
	 */
	addToBetslip(basket: TAddBetslip): Promise<any>;
	/**
	 * Adds a bet to the betslip using the V2 API endpoint.
	 *
	 * @param payload - The bet details to add to the betslip
	 * @param payload.culture - The culture/locale setting (automatically set from instance locale)
	 * @param payload.eId - Event ID
	 * @param payload.bId - Bet ID
	 * @param payload.r - Coefficient/Odds value
	 * @param payload.fs - Handicap or Total size (nullable)
	 * @param payload.a1 - Additional parameter 1 (nullable)
	 * @param payload.a2 - Additional parameter 2 (nullable)
	 * @param payload.isLive - Whether this is a live bet
	 * @param payload.BetslipType - optional - coupon type is specified
	 * @returns Promise resolving to a boolean indicating success, or null on failure
	 */
	addToBetslipV2(payload: TAddBetslip): Promise<{
		data: boolean | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Removes a bet from the betslip.
	 *
	 * @param payload - The bet removal payload containing:
	 *   - eId: Event ID
	 *   - bId: Bet ID
	 *   - r: Coefficient/odds
	 *   - fs: Handicap or total size (nullable)
	 *   - a1: Additional parameter (nullable)
	 *   - a2: Additional parameter (nullable)
	 *   - BetslipType: - optional - coupon type is specified
	 * @returns A promise resolving to a boolean indicating success, or null
	 */
	removeFromBetslipV2(payload: TAddBetslip): Promise<{
		data: boolean | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Removes a bet from the bet slip.
	 * @param basket - An object containing information about the bet slip.
	 * @returns Returns true if the item was successfully removed, otherwise returns false.
	 * @deprecated use removeFromBetslipV2
	 */
	removeFromBetslip(basket: TAddBetslip): Promise<any>;
	/**
	 * Removes a bonus from the bet slip.
	 * @returns {Promise<boolean>} Returns true if the bonus was successfully removed, otherwise returns false.
	 * @deprecated use addToBetslipV2
	 */
	removeBonus(): Promise<boolean>;
	/**
	 * Adds a bonus to the bet slip.
	 * @param odd - The coefficient to which the bonus is added.
	 * @returns The result of the operation or null if the result is undefined.
	 * @deprecated use addToBetslipV2
	 */
	addBonus(odd: number): Promise<any>;
	/**
	 * Updates a bet in the bet slip.
	 * @param basket - The basket containing bet information.
	 * @returns Returns true if the bet was successfully updated, otherwise returns false.
	 * @deprecated use addToBetslipV2
	 */
	updateBet(basket: TAddBetslip): Promise<boolean>;
	/**
	  * Retrieves bet limits.
	  * @returns An object with the minimum and maximum bet limits.
	  * @deprecated use addToBetslipV2 or removeFromBetslipV2
	  */
	getBetsLimits(): Promise<any>;
	/**
	  * Retrieves bet limits.
	  * @returns An object with the minimum and maximum bet limits.
	  * @deprecated use addToBetslipV2 or removeFromBetslipV2
	*/
	getBetsLimitsNew(): Promise<{
		data: any;
		error: string | null;
		status: number;
		statusText: string;
	} | {
		data: {
			Min: null;
			Max: null;
			MaxOddForMulty: number;
		};
		status: number;
		statusText: string;
	}>;
	/**
	  * Retrieves a list of available currencies (essentially a list of cash registers).
	  * @returns A list of available currencies.
	  */
	getCurrencies(): Promise<any>;
	/**
	  * Retrieves a list of countries.
	  * @returns A list of countries or null if the user is not authorized.
	  */
	getCountries(): Promise<any>;
	getAllKeys(key: string): Promise<any>;
	/**
	 * Fetches slides data from a predefined URL.
	 *
	 * @returns {Promise<string | null>} A promise that resolves to the slides data as a string, or null if an error occurs.
	 *
	 * @throws {Error} If the request fails or the response status is not successful.
	 */
	getSlides(target?: string): Promise<{
		data: string | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	getSiteSlidesSections(target?: string): Promise<{
		data: string | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Fetches event statistic data for a given event ID.
	 *
	 * @param {number} brEventId - The ID of the event for which to fetch statistics.
	 * @returns {Promise<any | null>} A promise that resolves to the event statistic data or null if an error occurs.
	 */
	getEventStatisticData(brEventId: number): Promise<{
		data: any;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Retrieves the statistics page for a specific event.
	 * @param brEventId - The unique identifier for the betting radar event.
	 * @returns {Promise<string | null>} A promise that resolves to the event statistics page content or null.
	 * @throws {Error} If the request fails or returns an invalid response.
	 */
	getEventStatisticPage(brEventId: number): Promise<{
		data: string | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Searches for prematch events using the NV20 API.
	 *
	 * @param searchString - The search string to query events.
	 * (Note: that all words containing cvr and words with one letter are removed from the searchString)
	 * @param options - Optional parameters to refine the search.
	 * @param options.LIMIT - Specifies the number of results to return. Defaults to `{ from: 0, size: 30 }` if not provided.
	 * @param options.negativeString - Excludes results containing this string.
	 * @param options.sportId - Filters events by the specified sport ID.
	 * @param options.tournamentId - Filters events by the specified tournament ID.
	 * @returns A promise that resolves with the search results or `null` if the request fails.
	 */
	searchPrematchEventsNv20(searchString: string, options?: RedisPrematchSearchParams): Promise<{
		data: any;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Searches for prematch event IDs using the NV20 API endpoint.
	 *
	 * This method performs a search for prematch events and returns their IDs based on the provided criteria.
	 * The search supports filtering by sport, country, tournament, teams, and includes pagination and sorting options.
	 *
	 * @param payload - The search criteria and options
	 * @param payload.locale - Language locale for the response (defaults to instance locale if not provided)
	 * @param payload.sportId - Array of sport IDs to filter by (e.g., [5, 27] for specific sports)
	 * @param payload.countryId - Country ID to filter by (null for no country filter)
	 * @param payload.tournamentId - Tournament ID to filter by (null for no tournament filter)
	 * @param payload.teams - Array of team identifiers in format 'sportId_categoryId_teamId' (e.g., ['5_8_282', '5_8_2493'])
	 * @param payload.LIMIT - Pagination settings (defaults to {from: 0, size: 30} if not provided)
	 * @param payload.LIMIT.from - Starting index for pagination (0-based)
	 * @param payload.LIMIT.size - Number of results to return per page
	 * @param payload.SORT - Sorting configuration
	 * @param payload.SORT.BY - Field to sort by (e.g., 'start' for event start time)
	 * @param payload.SORT.DIRECTION - Sort direction ('ASC' for ascending, 'DESC' for descending)
	 *
	 * @returns Promise resolving to search results containing event IDs with pagination metadata
	 *
	 * @example
	 * ```typescript
	 * const searchCriteria = {
	 *   locale: 'en-US',
	 *   sportId: [5, 27], // Football and Basketball
	 *   countryId: null,
	 *   tournamentId: null,
	 *   teams: ['5_8_282', '5_8_2493', '5_3_11', '5_3_5'],
	 *   LIMIT: { from: 0, size: 3000 },
	 *   SORT: { BY: 'start', DIRECTION: 'ASC' }
	 * };
	 *
	 * const results = await api.searchPrematchEventsIdsNv20(searchCriteria);
	 * ```
	 */
	searchPrematchEventsIdsNv20(payload: TRedisSearchPrematchIds): Promise<{
		data: any;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Retrieves prematch event data by their identifiers.
	 *
	 * @param {(number | string)[]} ids - Array of event identifiers to retrieve data for.
	 * @param {boolean} [noslice=true] - Flag determining whether to retrieve full data without limitations.
	 *   - `true` - returns full event data
	 *   - `false` - returns abbreviated data
	 *
	 * @returns {Promise<{ data: any | null, error: string | null, status: number, statusText: string }>}
	 * Object with request result containing:
	 *   - `data` - event data or `null` on error
	 *   - `error` - error message or `null` on success
	 *   - `status` - HTTP response status code
	 *   - `statusText` - textual description of the status
	 *
	 * @remarks
	 * **API Endpoint:** `POST /stats/pm/getlocalesevents` (NV20 API)
	 *
	 * This method allows retrieving detailed information about multiple prematch events in a single request.
	 * Uses the current locale (`this.locale`) to get translated data.
	 *
	 * @example
	 * ```typescript
	 * // Get full event data
	 * const result = await api.getPrematchEventsByIds([12345, 67890], true);
	 *
	 * // Request payload:
	 * // {
	 * //   "eventIds": [12345, 67890],
	 * //   "locales": ["en-US"],
	 * //   "noslice": true
	 * // }
	 *
	 * // Example successful response:
	 * // {
	 * //   data: {
	 * //     events: [
	 * //       {
	 * //         eventId: 12345,
	 * //         sportId: 5,
	 * //         tournamentId: 201,
	 * //         homeTeam: "Manchester United",
	 * //         awayTeam: "Liverpool",
	 * //         startTime: "2026-02-05T20:00:00Z",
	 * //         markets: [...],
	 * //         // ... other event fields
	 * //       },
	 * //       {
	 * //         eventId: 67890,
	 * //         // ... second event data
	 * //       }
	 * //     ]
	 * //   },
	 * //   error: null,
	 * //   status: 200,
	 * //   statusText: "OK"
	 * // }
	 *
	 * // Get abbreviated data
	 * const shortResult = await api.getPrematchEventsByIds([12345], false);
	 *
	 * // Handle result
	 * if (result.error) {
	 *   console.error('Error:', result.error);
	 * } else {
	 *   console.log('Events:', result.data);
	 * }
	 * ```
	 */
	getPrematchEventsByIds(ids: (number | string)[], noslice?: boolean): Promise<{
		data: any;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Retrieves aggregated dictionary data from Redis using FT.AGGREGATE command.
	 * Groups and counts items by specified dictionary type (sport, country, or tournament).
	 *
	 * @param payload - The search parameters for dictionary aggregation
	 * @param payload.locale - Language locale code for filtering results
	 * @param payload.sportId - Sport ID(s) to include in search
	 * @param payload.countryId - Country ID(s) to include in search
	 * @param payload.tournamentId - Tournament ID(s) to include in search
	 * @param payload.dictionary - Dictionary type to group by ('sport' | 'country' | 'tournament')
	 * @param payload.notsport - Sport ID(s) to exclude from search
	 * @param payload.notcountry - Country ID(s) to exclude from search
	 * @param payload.nottournament - Tournament ID(s) to exclude from search
	 * @param payload.LIMIT - Maximum number of results to return
	 * @param payload.minTime - Minimum time filter for events
	 * @param payload.maxTime - Maximum time filter for events
	 *
	 * @returns Promise resolving to aggregated results with total count and grouped items,
	 *          or error object with total: 0 and empty results array on failure
	 *
	 * @example
	 * ```typescript
	 * // Get sport dictionary with counts
	 * const sportDict = await redisDb.getDictionary({
	 *   locale: 'en',
	 *   dictionary: 'sport',
	 *   LIMIT: { from: 0, size: 10 },
	 *   minTime: 1640995200,
	 *   maxTime: 1641081600
	 * });
	 *
	 * // Get country dictionary excluding specific sports
	 * const countryDict = await redisDb.getDictionary({
	 *   locale: 'ru',
	 *   dictionary: 'country',
	 *   notsport: [1, 2, 3],
	 *   LIMIT: { from: 0, size: 50 }
	 * });
	 *
	 * // Get tournament dictionary for specific sport and country
	 * const tournamentDict = await redisDb.getDictionary({
	 *   locale: 'en',
	 *   dictionary: 'tournament',
	 *   sportId: [1],
	 *   countryId: [225],
	 *   LIMIT: { from: 0, size: 100 }
	 * });
	 * ```
	 */
	getDictionaryNv20(payload: RedisDictionaryParams): Promise<{
		data: any;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Retrieves a list of sports from the NV20 API endpoint with optional time filtering.
	 *
	 * @param {number} [minutes=0] - Optional time window in minutes to filter sports data.
	 *                                If greater than 0, filters results to include only data
	 *                                from the current time to the specified minutes in the future.
	 * @param {number} [timeout=MAX_TIME_EXECUTION_MS] - Optional request timeout in milliseconds.
	 * @returns {Promise<I.ISport[]>} A promise that resolves to an array of sports objects sorted by priority.
	 *                                 Each sport contains an ID, Name, and count (cnt) property.
	 *
	 * @example
	 * // Get all available sports
	 * const sports = await betBoosterApi.getLineSportsNv20();
	 *
	 * @example
	 * // Get sports updated in the last 30 minutes with a custom timeout
	 * const sports = await betBoosterApi.getLineSportsNv20(30, 5000);
	 */
	getLineSportsNv20(minutes?: number, timeout?: number): Promise<ISport[]>;
	/**
	 * Retrieves the main line sports data with fallback mechanism.
	 *
	 * Attempts to fetch line sports data from the NV20 endpoint first with a 2000ms timeout.
	 * If no sports data is returned, falls back to the standard getLineSports endpoint.
	 *
	 * @param minutes - Optional. The number of minutes to look back for sports data. Defaults to 0.
	 * @param timeout - Optional. The timeout duration in milliseconds for the NV20 API request. Defaults to 1500.
	 * @returns A promise that resolves to an array of sports objects containing line sports data.
	 * @example
	 * // Get current line sports
	 * const sports = await getLineSportsMain();
	 *
	 * @example
	 * // Get line sports from the last 30 minutes
	 * const sports = await getLineSportsMain(30);
	 */
	getLineSportsMain(minutes?: number, timeout?: number): Promise<ISport[]>;
	/**
	 * Retrieves countries for a given sport using the NV20 API.
	 * @param sportId - The sport ID to filter countries by.
	 * @param minutes - Optional time window in minutes for the query. Defaults to 0 (no time filter).
	 * @returns A promise that resolves to the response data containing countries or null if the request fails.
	 */
	getCountriesBySportNv20(sportId: number, minutes?: number, timeout?: number): Promise<ICountry[]>;
	/**
	 * Retrieves a list of countries for a given sport, with fallback behavior.
	 *
	 * Attempts to fetch countries using the NV20 API with a 5-second timeout.
	 * If no results are returned, falls back to the standard countries list endpoint.
	 *
	 * @param sportId - The unique identifier of the sport
	 * @param minutes - Optional. The number of minutes to use as a filter criteria. Defaults to 0.
	 * @param timeout - Optional. The timeout duration in milliseconds for the NV20 API request. Defaults to 3000.
	 * @returns A promise that resolves to an array of countries for the specified sport
	 *
	 * @example
	 * ```typescript
	 * const countries = await this.getCountriesListMain(1, 30);
	 * ```
	 */
	getCountriesListMain(sportId: number, minutes?: number, timeout?: number): Promise<ICountry[]>;
	/**
	 * Retrieves tournaments from the NV20 API for a specific sport and optional country.
	 * @param sportId - The sport ID to filter tournaments by
	 * @param countryId - Optional country ID to filter tournaments by
	 * @param minutes - Optional time window in minutes for tournament data (default: 0, no time filter)
	 * @returns A promise that resolves to the response data containing tournaments or null
	 */
	getPrematchTournamentsNv20(sportId: number | string, countryId: number | string | null | undefined, minutes?: number, timeout?: number): Promise<ITournamentShort[]>;
	/**
	 * Retrieves prematch tournaments for a given sport and country.
	 *
	 * Attempts to fetch tournaments using the NV2.0 API first. If no tournaments are returned,
	 * falls back to the standard API as a failover mechanism.
	 *
	 * @param sportId - The sport identifier (number or string)
	 * @param countryId - The country identifier (number or string)
	 * @param minutes - The time window in minutes for prematch tournaments (default: 0)
	 * @param timeout - The request timeout in milliseconds (default: 3000)
	 * @returns A promise that resolves to an array of tournament objects
	 * @throws May throw an error if both API calls fail
	 *
	 * @example
	 * const tournaments = await betBoosterApi.getPrematchTournamentsMain(1, 'US', 30, 5000);
	 */
	getPrematchTournamentsMain(sportId: number | string, countryId: number | string, minutes?: number, timeout?: number): Promise<ITournamentShort[]>;
	getPrematchTournamentsHeadersMain(sportId: number | string, minutes?: number, timeout?: number): Promise<ITournamentShort[]>;
	searchPrematchTournametsEventsNv20(searchString: string, options?: RedisPrematchSearchParams): Promise<{
		data: any;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Sends error information to the specified endpoint.
	 *
	 * @param text - The error message text.
	 * @param code - The error code.
	 * @returns A promise that resolves to a string or null based on the response.
	 */
	sendErrInfo(text: string, code: string): Promise<{
		data: boolean | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	cloneBetCoupon(payload: {
		betId?: number | null;
		code?: string | number | null;
		culture?: string | null;
	}): Promise<{
		data: any;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * @deprecated use getCdnSlidesData instead
	 */
	getAllBanners(): Promise<any>;
	/**
	 * Fetches and merges slide data from multiple CDN sites.
	 *
	 * This method retrieves JSON data from multiple CDN endpoints by appending 'data.json'
	 * to each site path, then merges all the slide collections into a single object.
	 *
	 * @param cdnUrl - The base CDN URL where slide data is hosted
	 * @param sites - Array of site identifiers to fetch data from. Each site will have '/data.json' appended to the CDN URL
	 * @param hardCodeSlides - Optional array of hardcoded slides that will be assigned to the 'slider-main' key
	 *
	 * @returns Promise that resolves to a merged object where keys represent slide collection names
	 *          and values are arrays of slide items from all sites
	 *
	 * @example
	 * ```typescript
	 * // Fetch slides from multiple sites and merge them
	 * const slidesData = await api.getCdnSlidesData(
	 *   'https://slides.fwdgmblns.space/file/imagesassets/',
	 *   ['imperiya_ori', 'testSite']
	 * );
	 *
	 * // Result structure:
	 * // {
	 * //   'slider-main': [...],
	 * //   'banner-slides': [...],
	 * //   'promo-slides': [...]
	 * // }
	 *
	 * // With hardcoded slides
	 * const slidesWithCustom = await api.getCdnSlidesData(
	 *   'https://slides.fwdgmblns.space/file/imagesassets/',
	 *   ['imperiya_ori', 'testSite'],
	 *   [{ id: 1, title: 'Custom Slide', image: 'custom.jpg' }]
	 * );
	 * ```
	 */
	getCdnSlidesData(cdnUrl: string, sites: string[], hardCodeSlides?: any[]): Promise<Record<string, any[]>>;
	/**
	 * Deposits money into a bet kiosk account.
	 * @param amount - The amount to deposit.
	 * @returns A promise that resolves to true if the deposit was successful, otherwise false or null.
	 * @deprecated use depositBetKioskV2 instead
	 */
	depositBetKiosk(amount: number): Promise<{
		data: boolean | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Deposits money into a bet kiosk account.
	 * @param amount - The amount to deposit.
	 * @returns A promise that resolves to true if the deposit was successful, otherwise false or null.
	 */
	depositBetKioskV2(amount: number): Promise<{
		data: boolean | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Deposits funds to a bet kiosk from a winned coupon or withdrawal order.
	 *
	 * @param payload - The deposit parameters
	 * @param payload.ID - The identifier for user
	 * @param payload.TransactionID - The transaction ID of the withdrawal order (must be greater than 0, mutually exclusive with BetCode)
	 * @param payload.BetCode - The betting code of the coupon (mutually exclusive with TransactionID)
	 *
	 * @remarks
	 * **Endpoint:** `POST /betting/DepositBetshopPlayerFromCheck`
	 *
	 * **Important:** Only one of `TransactionID` or `BetCode` can be provided at a time.
	 * These parameters are mutually exclusive - passing both will result in an error.
	 * - Use `TransactionID` for withdrawal orders (must be greater than 0)
	 * - Use `BetCode` for coupon deposits (non-empty string)
	 *
	 * @returns A promise that resolves to an object with data, error, status and statusText
	 *
	 * @example
	 * ```typescript
	 * // Deposit from withdrawal order (TransactionID)
	 * const result = await api.depositBetKioskFromCheck({ ID: 123, TransactionID: 456 });
	 * // Payload: { "ID": 123, "TransactionID": 456 }
	 * // Response:
	 * // {
	 * //   data: {
	 * //     Data: { Sum: 13.1, IsSuccess: true, Errors: 0 },
	 * //     ReasonMessage: "None",
	 * //     ReasonId: 0
	 * //   },
	 * //   error: null,
	 * //   status: 200,
	 * //   statusText: "OK"
	 * // }
	 *
	 * // Deposit from coupon (BetCode)
	 * const result = await api.depositBetKioskFromCheck({ ID: 123, BetCode: "ABC123" });
	 * // Payload: { "ID": 123, "BetCode": "ABC123" }
	 * // Response (error case):
	 * // {
	 * //   data: {
	 * //     Data: { Sum: 0, IsSuccess: false, Errors: 0 },
	 * //     ReasonMessage: "MoneyAlreadyOut",
	 * //     ReasonId: 59
	 * //   },
	 * //   error: null,
	 * //   status: 200,
	 * //   statusText: "OK"
	 * // }
	 * ```
	 */
	depositBetKioskFromCheck(payload: {
		ID: number;
		TransactionID?: number;
		BetCode?: string;
	}): Promise<{
		data: {
			Data: {
				Sum: number;
				IsSuccess: boolean;
				Errors: number;
			};
			ReasonMessage: string;
			ReasonId: number;
		} | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	getFaq(): Promise<any>;
	getFlatpagesList(): Promise<any>;
	test3(): Promise<string>;
	/**
	 * @deprecated sellBet - Not implemented
	 */
	sellBet(data: any): Promise<void>;
	/** Конвертирует различные представления корзины в единый формат
	 * @param betslipItem - элемент корзины
	 */
	convertBasketToPost(betslipItem: IBetslipItems): IAddToBasket;
	/**
	 * Gets information about the location of the site
	 * @param partnerName - имя партнера
	 * @param siteTag - тег сайта
	 * @returns
	 */
	getSiteLocation(partnerName: string, siteTag: string): Promise<{
		data: string | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Retrieves MTracker event data for a specific event.
	 *
	 * @param eventId - The unique identifier of the event. Can be either a number or string.
	 * @returns A Promise that resolves to the event data as a string, or null if not found.
	 * @throws Will throw an error if the request fails or returns an invalid response.
	 *
	 * @remarks
	 * This method makes a request to the `/mt/event/{eventId}` endpoint using the NV20 API version.
	 * The response is processed through the `responseHandlerDataData` method.
	 */
	getMTrackerEvent(eventId: number | string): Promise<{
		data: string | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Retrieves live MTracker data from the API.
	 *
	 * @returns {Promise<string | null>} A promise that resolves to the live MTracker data as a string, or null if no data is available.
	 * @throws {Error} May throw an error if the API request fails or returns an unsuccessful status.
	 *
	 * @remarks
	 * This method makes a GET request to the `/mt/live` endpoint using the NV20 API version.
	 * The response is processed through `responseHandlerDataData` to extract the data.
	 */
	getMTrackerLive(): Promise<{
		data: string | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
	/**
	 * Retrieves the download URL for an APK file.
	 * @param path - The path to the APK resource.
	 * @returns A promise that resolves to the APK download URL string, or null if not available.
	 */
	getApkDownloadUrl(path: string): Promise<{
		data: string | null;
		error: string | null;
		status: number;
		statusText: string;
	}>;
}

export {};
