import React from 'react';
import { type Selection, type Freebet, ConditionState, OutcomeState } from '@azuro-org/toolkit';
import { type Address } from 'viem';
export declare enum BetslipDisableReason {
    ConditionState = "ConditionState",
    BetAmountGreaterThanMaxBet = "BetAmountGreaterThanMaxBet",
    BetAmountLowerThanMinBet = "BetAmountLowerThanMinBet",
    ComboWithForbiddenItem = "ComboWithForbiddenItem",
    ComboWithSameGame = "ComboWithSameGame",
    SelectedOutcomesTemporarySuspended = "SelectedOutcomesTemporarySuspended",
    TotalOddsTooLow = "TotalOddsTooLow",
    /**
      * @deprecated Only for v2
    */
    PrematchConditionInStartedGame = "PrematchConditionInStartedGame",
    FreeBetExpired = "FreeBetExpired"
}
type RemoveItemProps = Selection;
export type BaseBetslipContextValue = {
    items: AzuroSDK.BetslipItem[];
    addItem: (itemProps: AzuroSDK.BetslipItem) => void;
    addItems: (items: AzuroSDK.BetslipItem[], replace?: boolean) => void;
    removeItem: (itemProps: RemoveItemProps) => void;
    clear: () => void;
};
export type DetailedBetslipContextValue = {
    betAmount: string;
    odds: Record<string, number>;
    totalOdds: number;
    maxBet: number | undefined;
    minBet: number | undefined;
    selectedFreebet: Freebet | undefined;
    freebets: Freebet[] | undefined | null;
    states: Record<string, ConditionState>;
    /** map of `${conditionId}-${outcomeId}` to its current `OutcomeState` */
    outcomeStates: Record<string, OutcomeState>;
    disableReason: BetslipDisableReason | undefined;
    changeBetAmount: (value: string) => void;
    selectFreebet: (value?: Freebet) => void;
    isStatesFetching: boolean;
    isOutcomeStatesFetching: boolean;
    isOddsFetching: boolean;
    isFreebetsFetching: boolean;
    /** @deprecated use `isBetCalculationFetching` instead */
    isMaxBetFetching: boolean;
    isBetCalculationFetching: boolean;
    isBetAllowed: boolean;
};
export declare const BaseBetslipContext: React.Context<BaseBetslipContextValue | null>;
export declare const DetailedBetslipContext: React.Context<DetailedBetslipContextValue | null>;
export declare const useBaseBetslip: () => BaseBetslipContextValue;
export declare const useDetailedBetslip: () => DetailedBetslipContextValue;
export type BetslipProviderProps = {
    children: React.ReactNode;
    affiliate?: Address;
};
export declare const BetslipProvider: React.FC<BetslipProviderProps>;
export {};
