interface Chip {
    id: number;
    name: "wildcard" | "freehit" | "bboost" | "3xc" | "manager";
    number: number;
    start_event: number;
    stop_event: number;
    chip_type: string;
    overrides: {
        rules: Record<string, unknown>;
        scoring: Record<string, unknown>;
        element_types: unknown[];
        pick_multiplier: number | null;
    };
}
interface GameSettings {
    league_join_private_max: number;
    league_join_public_max: number;
    league_max_size_public_classic: number;
    league_max_size_public_h2h: number;
    league_max_size_private_h2h: number;
    league_max_ko_rounds_private_h2h: number;
    league_prefix_public: string;
    league_points_h2h_win: number;
    league_points_h2h_lose: number;
    league_points_h2h_draw: number;
    league_ko_first_instead_of_random: boolean;
    squad_squadplay: number;
    squad_squadsize: number;
    squad_team_limit: number;
    squad_total_spend: number;
    ui_currency_multiplier: number;
    ui_use_special_shirts: boolean;
    stats_form_days: number;
    sys_vice_captain_enabled: boolean;
    transfers_cap: number;
    transfers_sell_on_fee: number;
    league_h2h_tiebreak_stats: string[];
    timezone: string;
}
interface GameConfig {
    settings: {
        entry_per_event: boolean;
        timezone: string;
    };
    rules: GameSettings;
    scoring: Record<string, unknown>;
}
interface Phase {
    id: number;
    name: string;
    start_event: number;
    stop_event: number;
    highest_score: number | null;
}
interface Team {
    code: number;
    id: number;
    name: string;
    short_name: string;
    strength: number;
    strength_overall_home: number;
    strength_overall_away: number;
    strength_attack_home: number;
    strength_attack_away: number;
    strength_defence_home: number;
    strength_defence_away: number;
}
interface ElementStat {
    label: string;
    name: string;
}
interface ElementType {
    id: number;
    plural_name: string;
    plural_name_short: string;
    singular_name: string;
    singular_name_short: string;
    squad_select: number;
    squad_min_play: number;
    squad_max_play: number;
    ui_shirt_specific: boolean;
}
/**
 * Bootsrap
 */
interface BootstrapData {
    chips: Chip[];
    events: Event[];
    game_settings: GameSettings;
    game_config: GameConfig;
    phases: Phase[];
    teams: Team[];
    element_stats: ElementStat[];
    element_types: ElementType[];
    elements: Element[];
    total_players: number;
}
interface StatValue {
    value: number;
    element: number;
}
interface Fixture {
    code: number;
    event: number;
    finished: boolean;
    finished_provisional: boolean;
    id: number;
    kickoff_time: string;
    minutes: number;
    provisional_start_time: boolean;
    started: boolean;
    team_a: number;
    team_a_score: number;
    team_h: number;
    team_h_score: number;
    stats: Stat[];
    team_h_difficulty: number;
    team_a_difficulty: number;
    pulse_id: number;
}
/**
 * Event Status
 */
interface CurrentEventStatus {
    bonus_added: boolean;
    date: string;
    event: number;
    points: string;
}
interface EventStatus {
    status: CurrentEventStatus[];
    leagues: string;
}
/**
 * Gameweek summary
 */
interface Gameweek {
    elements: Element[];
}
interface Element {
    id: number;
    web_name: string;
    element_type: number;
    team: number;
    now_cost: number;
    total_points: number;
    selected_by_percent: string;
    form: string;
    points_per_game: string;
    news: string;
    news_added: string | null;
    minutes: number;
    goals_scored: number;
    assists: number;
    clean_sheets: number;
    ict_index: string;
    expected_goals: string;
    expected_assists: string;
}
interface Element {
    id: number;
    stats: Stats;
    explain: Explain[];
    modified: boolean;
}
interface Stats {
    minutes: number;
    goals_scored: number;
    assists: number;
    clean_sheets: number;
    goals_conceded: number;
    own_goals: number;
    penalties_saved: number;
    penalties_missed: number;
    yellow_cards: number;
    red_cards: number;
    saves: number;
    bonus: number;
    bps: number;
    influence: string;
    creativity: string;
    threat: string;
    ict_index: string;
    starts: number;
    expected_goals: string;
    expected_assists: string;
    expected_goal_involvements: string;
    expected_goals_conceded: string;
    mng_win: number;
    mng_draw: number;
    mng_loss: number;
    mng_underdog_win: number;
    mng_underdog_draw: number;
    mng_clean_sheets: number;
    mng_goals_scored: number;
    total_points: number;
    in_dreamteam: boolean;
}
interface Explain {
    fixture: number;
    stats: Stat[];
}
interface Stat {
    identifier: string;
    a: StatValue[];
    h: StatValue[];
}
interface Stat {
    identifier: string;
    points: number;
    value: number;
    points_modification: number;
}
interface History {
    element: number;
    fixture: number;
    opponent_team: number;
    total_points: number;
    was_home: boolean;
    kickoff_time: string;
    team_h_score: number;
    team_a_score: number;
    round: number;
    modified: boolean;
    minutes: number;
    goals_scored: number;
    assists: number;
    clean_sheets: number;
    goals_conceded: number;
    own_goals: number;
    penalties_saved: number;
    penalties_missed: number;
    yellow_cards: number;
    red_cards: number;
    saves: number;
    bonus: number;
    bps: number;
    influence: string;
    creativity: string;
    threat: string;
    ict_index: string;
    starts: number;
    expected_goals: string;
    expected_assists: string;
    expected_goal_involvements: string;
    expected_goals_conceded: string;
    mng_win: number;
    mng_draw: number;
    mng_loss: number;
    mng_underdog_win: number;
    mng_underdog_draw: number;
    mng_clean_sheets: number;
    mng_goals_scored: number;
    value: number;
    transfers_balance: number;
    selected: number;
    transfers_in: number;
    transfers_out: number;
}
interface HistoryPast {
    season_name: string;
    element_code: number;
    start_cost: number;
    end_cost: number;
    total_points: number;
    minutes: number;
    goals_scored: number;
    assists: number;
    clean_sheets: number;
    goals_conceded: number;
    own_goals: number;
    penalties_saved: number;
    penalties_missed: number;
    yellow_cards: number;
    red_cards: number;
    saves: number;
    bonus: number;
    bps: number;
    influence: string;
    creativity: string;
    threat: string;
    ict_index: string;
    starts: number;
    expected_goals: string;
    expected_assists: string;
    expected_goal_involvements: string;
    expected_goals_conceded: string;
    mng_win: number;
    mng_draw: number;
    mng_loss: number;
    mng_underdog_win: number;
    mng_underdog_draw: number;
    mng_clean_sheets: number;
    mng_goals_scored: number;
}
/**
 * Individual player summary
 */
interface PlayerSummary {
    fixtures: Fixture[];
    history: History[];
    history_past: HistoryPast[];
}
interface Leagues {
    classic: ClassicLeague[];
    h2h: H2HLeague[];
    cup: Cup;
}
interface ClassicLeague {
    id: number;
    name: string;
    short_name: string | null;
    created: string;
    closed: boolean;
    rank: number | null;
    max_entries: number | null;
    league_type: string;
    scoring: string;
    admin_entry: number | null;
    start_event: number;
    entry_can_leave: boolean;
    entry_can_admin: boolean;
    entry_can_invite: boolean;
    has_cup: boolean;
    cup_league: number | null;
    cup_qualified: boolean | null;
    rank_count: number;
    entry_percentile_rank: number;
    active_phases: ActivePhase[];
    entry_rank: number;
    entry_last_rank: number;
}
interface H2HLeague {
    id: number;
    name: string;
    short_name: string | null;
    created: string;
    closed: boolean;
    rank: number | null;
    max_entries: number | null;
    league_type: string;
    scoring: string;
    admin_entry: number;
    start_event: number;
    entry_can_leave: boolean;
    entry_can_admin: boolean;
    entry_can_invite: boolean;
    has_cup: boolean;
    cup_league: number | null;
    cup_qualified: boolean | null;
    rank_count: number | null;
    entry_percentile_rank: number | null;
    active_phases: unknown[];
    entry_rank: number;
    entry_last_rank: number;
}
interface Cup {
    matches: unknown[];
    status: CupStatus;
    cup_league: number | null;
}
interface CupStatus {
    qualification_event: number | null;
    qualification_numbers: number | null;
    qualification_rank: number | null;
    qualification_state: string | null;
}
interface ActivePhase {
    phase: number;
    rank: number;
    last_rank: number;
    rank_sort: number;
    total: number;
    league_id: number;
    rank_count: number;
    entry_percentile_rank: number;
}
interface CupMatch {
    id: number;
    entry_1_entry: number;
    entry_1_name: string;
    entry_1_player_name: string;
    entry_1_points: number;
    entry_1_win: number;
    entry_1_draw: number;
    entry_1_loss: number;
    entry_1_total: number;
    entry_2_entry: number;
    entry_2_name: string;
    entry_2_player_name: string;
    entry_2_points: number;
    entry_2_win: number;
    entry_2_draw: number;
    entry_2_loss: number;
    entry_2_total: number;
    is_knockout: boolean;
    league: number;
    winner: number;
    seed_value: number | null;
    event: number;
    tiebreak: number | null;
    is_bye: boolean;
    knockout_name: string;
}
/**
 * Individual manager summary
 */
interface ManagerSummary {
    id: number;
    joined_time: string;
    started_event: number;
    favourite_team: number;
    player_first_name: string;
    player_last_name: string;
    player_region_id: number;
    player_region_name: string;
    player_region_iso_code_short: string;
    player_region_iso_code_long: string;
    years_active: number;
    summary_overall_points: number;
    summary_overall_rank: number;
    summary_event_points: number;
    summary_event_rank: number;
    current_event: number;
    leagues: Leagues;
    name: string;
    name_change_blocked: boolean;
    entered_events: number[];
    kit: string;
    last_deadline_bank: number;
    last_deadline_value: number;
    last_deadline_total_transfers: number;
    cup_matches: CupMatch[];
}
interface Transfer {
    element_in: number;
    element_in_cost: number;
    element_out: number;
    element_out_cost: number;
    entry: number;
    event: number;
    time: string;
}
interface CurrentEvent {
    event: number;
    points: number;
    total_points: number;
    rank: number;
    rank_sort: number;
    overall_rank: number;
    percentile_rank: number;
    bank: number;
    value: number;
    event_transfers: number;
    event_transfers_cost: number;
    points_on_bench: number;
}
interface PastSeason {
    season_name: string;
    total_points: number;
    rank: number;
}
interface UsedChip {
    name: string;
    time: string;
    event: number;
}
interface ManagerHistory {
    current: CurrentEvent[];
    past: PastSeason[];
    chips: UsedChip[];
}
interface AutomaticSub {
    entry: number;
    element_in: number;
    element_out: number;
    event: number;
}
interface EntryHistory {
    event: number;
    points: number;
    total_points: number;
    rank: number;
    rank_sort: number;
    overall_rank: number;
    percentile_rank: number;
    bank: number;
    value: number;
    event_transfers: number;
    event_transfers_cost: number;
    points_on_bench: number;
}
interface Pick {
    element: number;
    position: number;
    multiplier: number;
    is_captain: boolean;
    is_vice_captain: boolean;
    element_type: number;
}
interface ManagerGameweekPicks {
    active_chip: null | string;
    automatic_subs: AutomaticSub[] | [];
    entry_history: EntryHistory;
    picks: Pick[];
}

/**
 * Configuration options for FPL client
 */
interface Config {
    debug: boolean;
}
/**
 * Client for fetching data from the Fantasy Premier League API
 */
declare class FplFetch {
    private config;
    private client;
    /**
     * Creates a new FPL API client
     * @param config - Configuration options
     *
     * @example
     * ```ts
     * const fpl = new FplFetch({ debug: true });
     * ```
     */
    constructor(config?: Config);
    /**
     * Retrieves the bootstrap static data from the FPL API.
     * This data contains core information about the current FPL season including:
     * teams, players, game settings and rules.
     * @returns Bootstrap data
     *
     * @example
     * ```ts
     * try {
     *   const data = await fpl.getBootstrapData();
     * } catch (error: unknown) {
     *   console.error(error);
     * }
     * ```
     */
    getBootstrapData(): Promise<BootstrapData>;
    /**
     * Gets the current event status.
     * This provides information about the current gameweek, and whether bonus points have been added.
     * @returns Current event status data
     *
     * @example
     * ```ts
     * try {
     *   const data = await fpl.getCurrentEvent();
     * } catch (error: unknown) {
     *   console.error(error);
     * }
     * ```
     */
    getCurrentEvent(): Promise<EventStatus>;
    /**
     * Gets all fixtures for the current season.
     * @returns List of fixtures
     *
     * @example
     * ```ts
     * try {
     *   const data = await fpl.getFixtures();
     * } catch (error: unknown) {
     *   console.error(error);
     * }
     * ```
     */
    getFixtures(): Promise<Fixture[]>;
    /**
     * Gets live data for a specific gameweek
     * @param id - Gameweek ID
     * @returns Live gameweek data
     *
     * @example
     * ```ts
     * try {
     *   const data = await fpl.getGameweek(1);
     * } catch (error: unknown) {
     *   console.error(error);
     * }
     * ```
     */
    getGameweek(id: number): Promise<Gameweek>;
    /**
     * Gets detailed data for a specific player
     * @param id - Player ID
     * @returns Player summary data
     *
     * @example
     * ```ts
     * try {
     *   const data = await fpl.getPlayer(1);
     * } catch (error: unknown) {
     *   console.error(error);
     * }
     * ```
     */
    getPlayer(id: number): Promise<PlayerSummary>;
    /**
     * Gets detailed data for a specific manager
     * @param id - Manager ID
     * @returns Manager summary data
     *
     * @example
     * ```ts
     * try {
     *   const data = await fpl.getManager(1);
     * } catch (error: unknown) {
     *   console.error(error);
     * }
     * ```
     */
    getManager(id: number): Promise<ManagerSummary>;
    /**
     * Gets transfer history for a specific manager
     * @param id - Manager ID
     * @returns List of transfers made by the manager
     *
     * @example
     * ```ts
     * try {
     *   const data = await fpl.getManagerTransfers(1);
     * } catch (error: unknown) {
     *   console.error(error);
     * }}
     * ```
     */
    getManagerTransfers(id: number): Promise<Transfer[]>;
    /**
     * Gets historical data for a specific manager
     * @param id - Manager ID
     * @returns Manager history data including past seasons and current season performance
     *
     * @example
     * ```ts
     * try {
     *   const data = await fpl.getManagerHistory(1);
     * } catch (error: unknown) {
     *   console.error(error);
     * }
     * ```
     */
    getManagerHistory(id: number): Promise<ManagerHistory>;
    /**
     * Gets a manager's team picks for a specific gameweek
     * @param id - Manager ID
     * @param gameweekId - Gameweek ID
     * @returns Manager's team selection and points for the specified gameweek
     *
     * @example
     * ```ts
     * try {
     *   const data = await fpl.getManagerGameweekPicks(1, 1);
     * } catch (error: unknown) {
     *   console.error(error);
     * }
     * ```
     */
    getManagerGameweekPicks(id: number, gameweekId: number): Promise<ManagerGameweekPicks>;
}

export { FplFetch as default };
