import { Type } from "@odoo/owl";
import { Action, ActionSpec, MenuItemOrSeparator } from "../actions/action";
import { Token } from "../formulas/tokenizer";
import { PivotRuntimeDefinition } from "../helpers/pivot/pivot_runtime_definition";
import { Model } from "../model";
import { AutoCompleteProposal, AutoCompleteProviderDefinition } from "../registries/auto_completes/auto_complete_registry";
import { SidePanelContent } from "../registries/side_panel_registry";
import { ChartColorScale, ChartDefinition, ChartDefinitionWithDataSource, ChartRangeDataSource, ChartStyle, ChartWithAxisDefinition, DataSetStyle, TitleDesign } from "../types/chart/chart";
import { FunnelChartDefinition } from "../types/chart/funnel_chart";
import { GeoChartDefinition } from "../types/chart/geo_chart";
import { TreeMapCategoryColorOptions, TreeMapChartDefinition, TreeMapColorScaleOptions } from "../types/chart/tree_map_chart";
import { DispatchResult } from "../types/commands";
import { ColorScaleThreshold, ConditionalFormat } from "../types/conditional_formatting";
import { DataValidationRule } from "../types/data_validation";
import { InformationNotification } from "../types/env";
import { FigureUI, ResizeDirection } from "../types/figure";
import { FunctionDescription } from "../types/functions";
import { GenericCriterionType } from "../types/generic_criterion";
import { BorderPosition, BorderStyle, CellPosition, Color, ComposerFocusType, CSSProperties, Dimension, GridClickModifiers, HeaderGroup, HeaderIndex, NamedRange, Pixel, Position, SortDirection, UID, Zone } from "../types/misc";
import { PivotCoreDefinition, PivotCoreMeasure, PivotCustomGroupedField, PivotDimension, PivotField, PivotFilter, PivotMeasure, SpreadsheetPivotCoreDefinition } from "../types/pivot";
import { Range } from "../types/range";
import { DOMCoordinates, DOMDimension, Rect } from "../types/rendering";
import { Store } from "../types/store_engine";
import { NotificationStoreMethods } from "../types/stores/notification_store_methods";
import { CoreTable, CriterionFilter, DataFilterValue, Table, TableConfig, TableStyle } from "../types/table";
import type { ComposerSelection } from "./composer/composer/abstract_composer_store";
import type { ContextMenuType } from "./grid/grid";
import type { ZoomedMouseEvent } from "./helpers/zoom";
import type { SidePanelComponentProps } from "./side_panel/side_panel/side_panel_store";
/**
 * Validate that a prop is an array, but with a more specific element type than `any[]`.
 */
declare function validateArrayOf<T>(): Type<T[]>;
/**
 * Validate that a prop is a record (string-keyed dictionary), but with a more
 * specific value type than `any`.
 */
declare function validateRecordOf<T>(): Type<Record<string, T>>;
/**
 * Validate that a prop is a `Set`, typed with a specific element type.
 */
declare function validateSetOf<T>(): Type<Set<T>>;
declare function validateRect(): Type<Rect>;
declare function validateBorderPosition(): Type<BorderPosition>;
declare function validateBorderStyle(): Type<BorderStyle>;
declare function validateDOMCoordinates(): Type<DOMCoordinates>;
declare function validateDOMDimension(): Type<DOMDimension>;
declare function validateSortDirection(): Type<SortDirection>;
declare function validateResizeDirection(): Type<ResizeDirection>;
declare function validateComposerFocusType(): Type<ComposerFocusType>;
declare function validateDimension(): Type<Dimension>;
declare function validateContextMenuType(): Type<ContextMenuType>;
/**
 * Validate that a prop is a store. Typed as the CQS-wrapped `Store<T>` to
 * match what `useStore(...)` returns at the call site.
 */
declare function validateStore<T>(): Type<Store<T>>;
declare function validateFunction<T = () => void>(): Type<T>;
export declare const types: {
    function: typeof validateFunction;
    ArrayOf: typeof validateArrayOf;
    RecordOf: typeof validateRecordOf;
    SetOf: typeof validateSetOf;
    GenericCriterionType: () => Type<GenericCriterionType>;
    UID: () => Type<UID>;
    CriterionFilter: () => Type<CriterionFilter>;
    CSSProperties: () => Type<CSSProperties>;
    ResizeDirection: typeof validateResizeDirection;
    FigureUI: () => Type<FigureUI>;
    Token: () => Type<Token>;
    CellPosition: () => Type<CellPosition>;
    AutoCompleteProviderDefinition: () => Type<AutoCompleteProviderDefinition>;
    AutoCompleteProposal: () => Type<AutoCompleteProposal>;
    FunctionDescription: () => Type<FunctionDescription>;
    Rect: typeof validateRect;
    Pixel: () => Type<Pixel>;
    HeaderIndex: () => Type<HeaderIndex>;
    BorderPosition: typeof validateBorderPosition;
    BorderStyle: typeof validateBorderStyle;
    Color: () => Type<Color>;
    ActionSpec: () => Type<ActionSpec>;
    DOMCoordinates: typeof validateDOMCoordinates;
    DOMDimension: typeof validateDOMDimension;
    ComposerFocusType: typeof validateComposerFocusType;
    SortDirection: typeof validateSortDirection;
    Store: typeof validateStore;
    Position: () => Type<Position>;
    PivotCoreDefinition: () => Type<PivotCoreDefinition>;
    PivotField: () => Type<PivotField>;
    PivotDimension: () => Type<PivotDimension>;
    PivotMeasure: () => Type<PivotMeasure>;
    PivotCoreMeasure: () => Type<PivotCoreMeasure>;
    PivotCustomGroupedField: () => Type<PivotCustomGroupedField>;
    PivotRuntimeDefinition: () => Type<PivotRuntimeDefinition>;
    PivotFilter: () => Type<PivotFilter>;
    DataFilterValue: () => Type<DataFilterValue>;
    SpreadsheetPivotCoreDefinition: () => Type<SpreadsheetPivotCoreDefinition>;
    ComposerSelection: () => Type<ComposerSelection>;
    Action: () => Type<Action>;
    MenuItemOrSeparator: () => Type<MenuItemOrSeparator>;
    Model: () => Type<Model>;
    DispatchResult: () => Type<DispatchResult>;
    Zone: () => Type<Zone>;
    Range: () => Type<Range>;
    HeaderGroup: () => Type<HeaderGroup>;
    GridClickModifiers: () => Type<GridClickModifiers>;
    ZoomedMouseEvent: () => Type<ZoomedMouseEvent<PointerEvent | MouseEvent>>;
    ConditionalFormat: () => Type<ConditionalFormat>;
    ColorScaleThreshold: () => Type<ColorScaleThreshold>;
    Table: () => Type<Table>;
    CoreTable: () => Type<CoreTable>;
    TableConfig: () => Type<TableConfig>;
    TableStyle: () => Type<TableStyle>;
    TitleDesign: () => Type<TitleDesign>;
    ChartDefinition: () => Type<ChartDefinition<string>>;
    ChartDefinitionWithDataSource: () => Type<ChartDefinitionWithDataSource<string>>;
    ChartWithAxisDefinition: () => Type<ChartWithAxisDefinition>;
    ChartStyle: () => Type<ChartStyle>;
    ChartColorScale: () => Type<ChartColorScale>;
    ChartRangeDataSource: () => Type<ChartRangeDataSource<string>>;
    DataSetStyle: () => Type<DataSetStyle>;
    GeoChartDefinition: () => Type<GeoChartDefinition<string>>;
    FunnelChartDefinition: () => Type<FunnelChartDefinition<string>>;
    TreeMapChartDefinition: () => Type<TreeMapChartDefinition<Range>>;
    TreeMapCategoryColorOptions: () => Type<TreeMapCategoryColorOptions>;
    TreeMapColorScaleOptions: () => Type<TreeMapColorScaleOptions>;
    NamedRange: () => Type<NamedRange>;
    DataValidationRule: () => Type<DataValidationRule>;
    InformationNotification: () => Type<InformationNotification>;
    NotificationStoreMethods: () => Type<NotificationStoreMethods>;
    SidePanelContent: () => Type<SidePanelContent>;
    SidePanelComponentProps: () => Type<SidePanelComponentProps>;
    DataValidationCriterionType: () => Type<"containsText" | "notContainsText" | "isEqualText" | "isEmail" | "isLink" | "dateIs" | "dateIsBefore" | "dateIsOnOrBefore" | "dateIsAfter" | "dateIsOnOrAfter" | "dateIsBetween" | "dateIsNotBetween" | "dateIsValid" | "isEqual" | "isNotEqual" | "isGreaterThan" | "isGreaterOrEqualTo" | "isLessThan" | "isLessOrEqualTo" | "isBetween" | "isNotBetween" | "isBoolean" | "isValueInList" | "isValueInRange" | "customFormula">;
    Dimension: typeof validateDimension;
    ContextMenuType: typeof validateContextMenuType;
    and: <T extends any[]>(types: T) => Type<import("@odoo/owl").UnionToIntersection<import("@odoo/owl").StripBrands<T[number]>>>;
    any: () => Type<any>;
    array: {
        (): Type<any[]>;
        <T>(): Type<T[]>;
        <T>(elementType: T): Type<import("@odoo/owl").StripBrands<T>[]>;
    };
    boolean: () => Type<boolean>;
    constructor: <T extends import("@odoo/owl").Constructor>(constructor: T) => Type<T>;
    customValidator: <T>(type: T, validator: (value: import("@odoo/owl").StripBrands<T>) => boolean, errorMessage?: string) => Type<import("@odoo/owl").StripBrands<T>>;
    instanceOf: <T extends import("@odoo/owl").Constructor>(constructor: T) => Type<InstanceType<T>>;
    literal: <const T extends import("@odoo/owl").LiteralTypes>(literal: T) => Type<T>;
    number: <T extends number = number>() => Type<T>;
    object: {
        (): Type<Record<string, any>>;
        <const Keys extends string[]>(keys: Keys): Type<import("@odoo/owl").ResolveOptionalEntries<import("@odoo/owl").KeyedObject<Keys>>>;
        <Shape extends {}>(): Type<import("@odoo/owl").ResolveOptionalEntries<Shape>>;
        <Shape extends {}>(shape: Shape): Type<import("@odoo/owl").ResolveOptionalEntries<Shape>>;
    };
    or: <T extends unknown[]>(types: T) => Type<import("@odoo/owl").StripBrands<T[number]>>;
    promise: {
        (): Type<Promise<void>>;
        <T>(type: T): Type<Promise<import("@odoo/owl").StripBrands<T>>>;
    };
    record: {
        (): Type<Record<PropertyKey, any>>;
        <V>(valueType: V): Type<Record<PropertyKey, import("@odoo/owl").StripBrands<V>>>;
    };
    ref: {
        (): Type<HTMLElement | null>;
        <T extends import("@odoo/owl").Constructor<HTMLElement>>(type: T): Type<InstanceType<T> | null>;
    };
    selection: <const T extends import("@odoo/owl").LiteralTypes>(literals: T[]) => Type<T>;
    signal: {
        (): Type<import("@odoo/owl").ReactiveValue<any>>;
        <T>(): Type<import("@odoo/owl").ReactiveValue<T>>;
        <T>(type: T): Type<import("@odoo/owl").ReactiveValue<import("@odoo/owl").StripBrands<T>>>;
    };
    strictObject: {
        <const Keys extends string[]>(keys: Keys): Type<import("@odoo/owl").ResolveOptionalEntries<import("@odoo/owl").KeyedObject<Keys>>>;
        <Shape extends {}>(shape: Shape): Type<import("@odoo/owl").ResolveOptionalEntries<Shape>>;
    };
    string: <T extends string = string>() => Type<T>;
    tuple: <const T extends unknown[]>(types: T) => Type<import("@odoo/owl").StripBrandsAll<T>>;
    component: () => Type<typeof import("@odoo/owl").Component>;
};
export {};
