import React, { ReactElement } from "react"; export type Rules = { featureFlags: Record; features: Record; validator?: (params: Rules & { name: string; }) => boolean; }; type ProviderProps = { children: ReactElement | string | number; } & Rules; type ConsumerProps = { children: ReactElement; fallback?: ReactElement; name: string; }; type SwitchProps = { children: ReactElement; fallback: ReactElement; name: string; }; export declare function FeatureGateProvider({ children, featureFlags, features, validator }: ProviderProps): ReactElement; declare const hasFeature: ({ features, featureFlags, name }: Rules & { name: string; }) => boolean; export declare function useFeature(name: string): Rules & { enabled: boolean; present: boolean; }; export declare function FeatureGate({ children, name, fallback }: ConsumerProps): React.ReactElement> | null; export declare function FeatureSwitch({ children, name, fallback }: SwitchProps): React.ReactElement> | null; export declare class Features> { features: T; validator: typeof hasFeature; constructor(features: T, validator?: typeof hasFeature); has(featureFlags: Record, name: K): boolean; } export {};