import { Select as SelectBase } from '@base-ui/react/select';
import { ReactNode } from 'react';
import { FieldErrorMatch } from '../field/field';
export declare const KUMO_SELECT_VARIANTS: {};
export declare const KUMO_SELECT_DEFAULT_VARIANTS: {};
/**
 * Select component styling metadata for Figma plugin code generation
 * Extracted from select.tsx implementation (source of truth)
 */
export declare const KUMO_SELECT_STYLING: {
    readonly trigger: {
        readonly height: 36;
        readonly paddingX: 12;
        readonly borderRadius: 8;
        readonly background: "color-secondary";
        readonly text: "text-color-surface";
        readonly ring: "color-border";
        readonly fontSize: 16;
        readonly fontWeight: 400;
    };
    readonly stateTokens: {
        readonly focus: {
            readonly ring: "color-active";
        };
        readonly disabled: {
            readonly opacity: 0.5;
        };
    };
    readonly icons: {
        readonly caret: {
            readonly name: "ph-caret-up-down";
            readonly size: 20;
        };
        readonly check: {
            readonly name: "ph-check";
            readonly size: 20;
        };
    };
    readonly popup: {
        readonly background: "color-secondary";
        readonly ring: "color-border";
        readonly borderRadius: 8;
        readonly padding: 6;
    };
    readonly option: {
        readonly paddingX: 8;
        readonly paddingY: 6;
        readonly borderRadius: 4;
        readonly fontSize: 16;
        readonly highlightBackground: "color-surface-secondary";
    };
};
export interface KumoSelectVariantsProps {
}
export declare function selectVariants(_props?: KumoSelectVariantsProps): string;
type SelectPropsGeneric<T, Multiple extends boolean | undefined = false> = SelectBase.Root.Props<T, Multiple> & KumoSelectVariantsProps & {
    multiple?: Multiple;
    renderValue?: (value: Multiple extends true ? T[] : T) => ReactNode;
    className?: string;
    /** Label content for the select (enables Field wrapper) - can be a string or any React node */
    label?: ReactNode;
    hideLabel?: boolean;
    placeholder?: string;
    loading?: boolean;
    /** Tooltip content to display next to the label via an info icon */
    labelTooltip?: ReactNode;
    /** Helper text displayed below the select */
    description?: ReactNode;
    /** Error message or validation error object */
    error?: string | {
        message: ReactNode;
        match: FieldErrorMatch;
    };
};
/**
 * Props for the Select component.
 * @description A dropdown select component for choosing from a list of options.
 * @property {ReactNode} [label] - Label content for the select (enables Field wrapper)
 * @property {ReactNode} [description] - Helper text displayed below the select
 * @property {string | { message: ReactNode, match: FieldErrorMatch }} [error] - Error message or validation error object
 */
export interface SelectProps {
    /** Additional CSS classes */
    className?: string;
    /** Label content for the select (enables Field wrapper) - can be a string or any React node */
    label?: ReactNode;
    /** Whether to visually hide the label (still accessible to screen readers) */
    hideLabel?: boolean;
    /** Placeholder text when no value is selected */
    placeholder?: string;
    /** Whether the select is in a loading state */
    loading?: boolean;
    /** Whether the select is disabled */
    disabled?: boolean;
    /** Whether the select is required */
    required?: boolean;
    /** Tooltip content to display next to the label via an info icon */
    labelTooltip?: ReactNode;
    /** The currently selected value */
    value?: unknown;
    /** Default value for uncontrolled usage */
    defaultValue?: unknown;
    /** Callback when the value changes */
    onValueChange?: (value: unknown) => void;
    /** Whether multiple selection is enabled */
    multiple?: boolean;
    /** Child elements (Select.Option components) */
    children?: ReactNode;
    /** Helper text displayed below the select */
    description?: ReactNode;
    /** Error message or validation error object */
    error?: string | {
        message: ReactNode;
        match: FieldErrorMatch;
    };
}
export declare function Select<T, Multiple extends boolean | undefined = false>({ children, className, renderValue, label, hideLabel, placeholder, loading, labelTooltip, description, error, required, ...props }: SelectPropsGeneric<T, Multiple> & {
    required?: boolean;
}): import("react/jsx-runtime").JSX.Element;
export declare namespace Select {
    var Option: <T>({ children, value }: OptionProps<T>) => import("react/jsx-runtime").JSX.Element;
}
type OptionProps<T> = {
    children: ReactNode;
    value: T;
};
export {};
//# sourceMappingURL=select.d.ts.map