import { ReactChild, ReactNode } from 'react';
import { IconType } from '../components/generic/Icon/Icon';
import { PillType } from '../components/generic/Pill';
import { Hotel } from '../models/Client/Hotel/Hotel';
import { Room } from '../models/Room/Room';
import { RoomRate } from '../models/Room/RoomRate';
export type RatePill = {
    id?: string;
    icon: IconType | ReactNode;
    type?: PillType;
    title?: string;
    description?: string;
    tooltipText?: string;
    setDescription?: (rate: RoomRate) => string | undefined;
    translation?: string;
    renderOverride?: (criteria: RatePillCriteriaMatch) => string | ReactChild | ReactNode;
    translationProps?: {
        [x: string]: string | number;
    };
};
type RatePillCriteriaMatch = {
    rate?: RoomRate;
    room?: Room;
    hotel: Hotel;
};
type RatePillCriteriaCallback = (criteria: RatePillCriteriaMatch) => boolean;
declare class RatePillProvider {
    private registeredPills;
    constructor();
    registerRatePill(pill: RatePill, criteria: RatePillCriteriaCallback, isExclusive?: boolean): void;
    registerRoomPill(pill: RatePill, criteria: RatePillCriteriaCallback): void;
    getPillsForRate(match: RatePillCriteriaMatch): RatePill[];
    getPillsForRoom(match: RatePillCriteriaMatch): RatePill[];
    private doesPillExist;
}
declare const _default: RatePillProvider;
export default _default;
