import { AxiosResponse } from 'axios';
import { BetStatus, MarketFilter, MarketSort, OrderProjection, PlaceInstruction, SortDir, Side, OrderBy, GroupBy, TimeRange, CurrentOrderSummary, ClearedOrderSummary, CancelInstruction, ReplaceInstruction, UpdateInstruction, CancelExecutionReport, ReplaceExecutionReport, UpdateExecutionReport, PersistenceType } from './betfair-api-types';
import { CurrencyRate, MarketChangeCallback } from './betfair-exchange-stream-api-types';
export interface BetfairApiState {
    locale: string;
    sessionKey?: string;
    appKey?: string;
    currencyRates?: CurrencyRate[];
    targetCurrency: string;
    conflateMs: number;
    heartbeatMs: number;
    marketChangeCallback: MarketChangeCallback;
}
export interface AuthCredentials {
    sessionKey: string;
    appKey: string;
}
export declare const createBetfairApiState: (locale: string, currencyCode: string, conflateMs: number, heartbeatMs: number, marketChangeCallback: MarketChangeCallback) => BetfairApiState;
export declare const ensureAuthenticated: (state: BetfairApiState) => AuthCredentials;
export declare const isAuthenticated: (state: BetfairApiState) => boolean;
export declare const login: (state: BetfairApiState, appKey: string, username: string, password: string) => Promise<BetfairApiState>;
export declare const logout: (sessionKey: string) => Promise<AxiosResponse>;
export declare const keepAlive: (sessionKey: string) => Promise<AxiosResponse>;
export declare const listMarketCatalogue: (state: BetfairApiState, filter: MarketFilter, marketProjection: any[], sort: MarketSort, maxResults: number) => Promise<AxiosResponse>;
export declare const listMarketBook: (state: BetfairApiState, params: any) => Promise<AxiosResponse>;
export declare const listEventTypes: (state: BetfairApiState, filter: MarketFilter) => Promise<AxiosResponse>;
export declare const listCompetitions: (state: BetfairApiState, filter: MarketFilter) => Promise<AxiosResponse>;
export declare const listTimeRanges: (state: BetfairApiState, filter: MarketFilter) => Promise<AxiosResponse>;
export declare const listEvents: (state: BetfairApiState, filter: MarketFilter) => Promise<AxiosResponse>;
export declare const listMarketTypes: (state: BetfairApiState, filter: MarketFilter) => Promise<AxiosResponse>;
export declare const listCountries: (state: BetfairApiState, filter: MarketFilter) => Promise<AxiosResponse>;
export declare const listVenues: (state: BetfairApiState, filter: MarketFilter) => Promise<AxiosResponse>;
export declare const listMarketProfitAndLoss: (state: BetfairApiState, marketIds: string[], includeSettledBets: boolean, includeBspBets: boolean, netOfCommission: boolean) => Promise<AxiosResponse>;
export declare const placeOrders: (state: BetfairApiState, marketId: string, instructions: PlaceInstruction[], customerRef: string, marketVersion: number, customerStrategyRef: string, async: boolean) => Promise<AxiosResponse>;
export declare const listCurrencyRates: (state: BetfairApiState, fromCurrency: string) => Promise<AxiosResponse>;
export declare const findCurrencyRate: (currencyRates: CurrencyRate[], currencyCode: string) => CurrencyRate | undefined;
/**
 * Standardizes location names for Betfair API consistency
 * @param location - The location string to standardize
 * @returns Standardized location string
 */
export declare const betfairStandardizeLocation: (location: string) => string;
/**
 * Lists current orders for the authenticated account
 * @param state - Current API state
 * @param betIds - Optional list of bet IDs to filter by
 * @param marketIds - Optional list of market IDs to filter by
 * @param orderProjection - What order data to include in the response
 * @param placedDateRange - Optional date range for when orders were placed
 * @param orderBy - How to order the results
 * @param sortDir - Sort direction (earliest to latest or latest to earliest)
 * @param fromRecord - Record index to start from (for pagination)
 * @param recordCount - Number of records to return
 * @returns Promise with current orders response
 */
export declare const listCurrentOrders: (state: BetfairApiState, betIds?: string[], marketIds?: string[], orderProjection?: OrderProjection, placedDateRange?: TimeRange, orderBy?: OrderBy, sortDir?: SortDir, fromRecord?: number, recordCount?: number) => Promise<AxiosResponse<{
    result: CurrentOrderSummary[];
}>>;
/**
 * Lists cleared (settled) orders for the authenticated account
 * @param state - Current API state
 * @param betStatus - Status of the bet (e.g., SETTLED, VOIDED, LAPSED, CANCELLED)
 * @param eventTypeIds - Optional list of event type IDs to filter by
 * @param eventIds - Optional list of event IDs to filter by
 * @param marketIds - Optional list of market IDs to filter by
 * @param runnerIds - Optional list of runner selection IDs to filter by
 * @param betIds - Optional list of bet IDs to filter by
 * @param side - Optional side filter (BACK or LAY)
 * @param settledDateRange - Optional date range for when bets were settled
 * @param groupBy - How to group the results
 * @param includeItemDescription - Whether to include item descriptions
 * @param fromRecord - Record index to start from (for pagination)
 * @param recordCount - Number of records to return
 * @returns Promise with cleared orders response
 */
export declare const listClearedOrders: (state: BetfairApiState, betStatus?: BetStatus, eventTypeIds?: string[], eventIds?: string[], marketIds?: string[], runnerIds?: number[], betIds?: string[], side?: Side, settledDateRange?: TimeRange, groupBy?: GroupBy, includeItemDescription?: boolean, fromRecord?: number, recordCount?: number) => Promise<AxiosResponse<{
    result: ClearedOrderSummary[];
}>>;
/**
 * Cancels orders on the exchange
 * @param state - Current API state
 * @param marketId - The market ID where the orders are placed
 * @param instructions - Array of cancel instructions
 * @param customerRef - Optional customer reference for the transaction
 * @returns Promise with cancel execution report
 */
export declare const cancelOrders: (state: BetfairApiState, marketId: string, instructions: CancelInstruction[], customerRef?: string) => Promise<AxiosResponse<{
    result: CancelExecutionReport;
}>>;
/**
 * Replaces orders on the exchange
 * @param state - Current API state
 * @param marketId - The market ID where the orders are placed
 * @param instructions - Array of replace instructions
 * @param customerRef - Optional customer reference for the transaction
 * @param marketVersion - Market version (optional but recommended)
 * @param async - Whether to process asynchronously
 * @returns Promise with replace execution report
 */
export declare const replaceOrders: (state: BetfairApiState, marketId: string, instructions: ReplaceInstruction[], customerRef?: string, marketVersion?: number, async?: boolean) => Promise<AxiosResponse<{
    result: ReplaceExecutionReport;
}>>;
/**
 * Updates orders on the exchange
 * @param state - Current API state
 * @param marketId - The market ID where the orders are placed
 * @param instructions - Array of update instructions
 * @param customerRef - Optional customer reference for the transaction
 * @returns Promise with update execution report
 */
export declare const updateOrders: (state: BetfairApiState, marketId: string, instructions: UpdateInstruction[], customerRef?: string) => Promise<AxiosResponse<{
    result: UpdateExecutionReport;
}>>;
/**
 * Creates a cancel instruction for a specific bet
 * @param betId - The bet ID to cancel
 * @param sizeReduction - Optional size reduction instead of full cancellation
 * @returns Cancel instruction
 */
export declare const createCancelInstruction: (betId: string, sizeReduction?: number) => CancelInstruction;
/**
 * Creates a replace instruction for a specific bet
 * @param betId - The bet ID to replace
 * @param newPrice - The new price for the bet
 * @returns Replace instruction
 */
export declare const createReplaceInstruction: (betId: string, newPrice: number) => ReplaceInstruction;
/**
 * Creates an update instruction for a specific bet
 * @param betId - The bet ID to update
 * @param newPersistenceType - The new persistence type
 * @returns Update instruction
 */
export declare const createUpdateInstruction: (betId: string, newPersistenceType: PersistenceType) => UpdateInstruction;
/**
 * Validates if a bet ID is in correct format
 * @param betId - The bet ID to validate
 * @returns True if valid, false otherwise
 */
export declare const isValidBetId: (betId: string) => boolean;
/**
 * Calculates potential profit for a back bet
 * @param stake - The stake amount
 * @param odds - The odds
 * @returns Potential profit
 */
export declare const calculateBackProfit: (stake: number, odds: number) => number;
/**
 * Calculates liability for a lay bet
 * @param stake - The stake amount (what you'll win)
 * @param odds - The odds
 * @returns Liability (what you'll lose if the bet wins)
 */
export declare const calculateLayLiability: (stake: number, odds: number) => number;
/**
 * Validates order parameters for common issues
 * @param marketId - Market ID
 * @param selectionId - Selection ID
 * @param price - Odds price
 * @param size - Bet size
 * @returns Object with validation result and any error messages
 */
export declare const validateOrderParameters: (marketId: string, selectionId: number, price: number, size: number) => {
    isValid: boolean;
    errors: string[];
};
//# sourceMappingURL=betfair-api.d.ts.map