import { HKJCClient } from '../client';
import { FootballMatch, FootballOddsType, HistoricFootballMatch, HistoricFootballMatchDetails, HistoricFootballMatchesResult } from '../types/football';
/**
 * Default odds types for `getAllFootballMatches`. HKJC's downstream rejects
 * large odds-type sets with `DOWNSTREAM_SERVICE_ERROR`, so the default is a
 * small, broadly-useful set: 1X2, handicap, over/under, correct score.
 */
export declare const DEFAULT_FOOTBALL_ODDS_TYPES: FootballOddsType[];
/**
 * Odds types known to be rejected by HKJC's API in any combination.
 * These appear to be deprecated early-settlement market variants.
 */
export declare const DEPRECATED_FOOTBALL_ODDS_TYPES: FootballOddsType[];
/**
 * Odds types that currently respond from the HKJC API. Use these for building
 * your own filtered request, but cap each call at ~4-5 types — large requests
 * are rejected with `DOWNSTREAM_SERVICE_ERROR`.
 */
export declare const SUPPORTED_FOOTBALL_ODDS_TYPES: FootballOddsType[];
/**
 * Result-only odds types for historic match details. Historic result queries
 * accept a wider set of football pool codes than live odds requests.
 */
export declare const DEFAULT_HISTORIC_FOOTBALL_RESULT_ODDS_TYPES: FootballOddsType[];
export interface FootballMatchesOptions {
    startDate?: string | null;
    endDate?: string | null;
    tournIds?: string[] | null;
    matchIds?: string[] | null;
    oddsTypes?: FootballOddsType[];
    featuredMatchesOnly?: boolean;
    frontEndIds?: string[] | null;
    earlySettlementOnly?: boolean;
    showAllMatch?: boolean;
    startIndex?: number | null;
    endIndex?: number | null;
}
export interface HistoricFootballMatchesOptions {
    startDate?: string | null;
    endDate?: string | null;
    startIndex?: number | null;
    endIndex?: number | null;
    teamId?: string | null;
}
export declare class FootballAPI {
    private client;
    constructor(client?: HKJCClient);
    /**
     * Get all football matches with associated odds
     * @param options Optional parameters to filter matches
     * @returns A list of football matches
     */
    getAllFootballMatches(options?: FootballMatchesOptions): Promise<FootballMatch[]>;
    /**
     * Get detailed information for a specific football match
     * @param matchId The ID of the match to retrieve
     * @param oddsTypes The types of odds to retrieve for the match
     * @returns Detailed information for the specified match
     */
    getFootballMatchDetails(matchId: string, oddsTypes?: FootballOddsType[]): Promise<FootballMatch | null>;
    /**
     * Search historic football match results.
     * @param options Optional date, pagination, and team filters
     * @returns Historic match search metadata and matches
     */
    searchHistoricFootballMatches(options?: HistoricFootballMatchesOptions): Promise<HistoricFootballMatchesResult>;
    /**
     * Get historic football matches only, without search metadata.
     * @param options Optional date, pagination, and team filters
     * @returns A list of historic football matches
     */
    getHistoricFootballMatches(options?: HistoricFootballMatchesOptions): Promise<HistoricFootballMatch[]>;
    /**
     * Get result-only pool details for a historic football match.
     * @param matchId The ID of the historic match to retrieve
     * @param oddsTypes The result pool types to retrieve
     * @returns Historic match result details for the specified match
     */
    getHistoricFootballMatchDetails(matchId: string | number, oddsTypes?: FootballOddsType[]): Promise<HistoricFootballMatchDetails | null>;
    /**
     * Get running match data using the specific running query
     * @param matchId Single match ID (string or number)
     * @returns Football match data using the running query
     */
    getRunningMatch(matchId: string | number): Promise<FootballMatch[]>;
}
