import { KdsListItemAccessory } from '../../../containers/ListItem/ListItemAccessory/types';
import { KdsFormFieldProps } from '../../types';
import { kdsTwinListSearchMode } from './enums';
export type KdsTwinListPossibleValue = {
    /** Unique identifier of the value. */
    id: string;
    /** Main text shown in the list. */
    text: string;
    /** Optional accessory rendered before the label. */
    accessory?: KdsListItemAccessory;
    /** Optional type id used by the type filter mode. */
    type?: string;
};
export type KdsTwinListPossibleType = {
    id: string;
    text: string;
    accessory?: KdsListItemAccessory;
};
export type KdsTwinListSearchMode = (typeof kdsTwinListSearchMode)[keyof typeof kdsTwinListSearchMode];
/**
 * Combined model value used internally by TwinListBody.
 * `includeUnknownValues` being `null` hides the unknown-values option entirely.
 */
export type KdsTwinListModelValue = {
    includedValues: string[];
    excludedValues: string[];
    includeUnknownValues: boolean | null;
};
export type TwinListHeaderProps = {
    /**
     * Types available in the type-filter mode. When provided, the "Type" tab is
     * shown. `undefined` hides it.
     */
    filterTypes?: KdsTwinListPossibleType[];
    /** Whether the pattern filter mode is available. */
    enablePatternFilter?: boolean;
    disabled?: boolean;
};
export type TwinListBodyProps = {
    /** Disables moving items between the lists. */
    disabled?: boolean;
    /** Whether the twin list is in an error state. Shows a red border on the list boxes. */
    error?: boolean;
    /** Values shown in the two lists. */
    possibleValues: KdsTwinListPossibleValue[];
    /** Current search term used to filter items in both lists. */
    searchTerm?: string;
    /** Label for the left (excluded) column. */
    excludeLabel?: string;
    /** Label for the right (included) column. */
    includeLabel?: string;
    /** Text shown for the unknown-values option. */
    unknownValuesText?: string;
    /** Text shown when a list is empty. */
    emptyStateLabel?: string;
    /**
     * Whether the twinlist is in a loading state. When true, a loading
     * indicator is shown and the lists are non-interactive.
     */
    loading?: boolean;
};
/** Props passed to defineProps (excludes model-bound fields handled by defineModel). */
export type KdsTwinListProps = KdsFormFieldProps & {
    /** Disables moving items between the lists. */
    disabled?: boolean;
    /** Values shown in the two lists. */
    possibleValues: KdsTwinListPossibleValue[];
    /**
     * Types available in the type-filter mode. When provided (even if empty
     * array), the "Type" tab is shown in the mode switcher. The caller is
     * responsible for merging types extracted from `possibleValues` with any
     * additional/previously-selected types before passing them here.
     *
     * `undefined` (default) hides the type-filter mode entirely.
     */
    filterTypes?: KdsTwinListPossibleType[];
    /**
     * Whether the pattern filter mode is available. Defaults to `false`.
     */
    enablePatternFilter?: boolean;
    /** Label for the left (excluded) column. */
    excludeLabel?: string;
    /** Label for the right (included) column. */
    includeLabel?: string;
    /** Text shown for the unknown-values option. */
    unknownValuesText?: string;
    /** Text shown when a list is empty. */
    emptyStateLabel?: string;
    /**
     * Whether the twinlist is in a loading state. When true, a loading
     * indicator is shown instead of the list contents while the header and mode
     * switcher remain visible.
     */
    loading?: boolean;
};
//# sourceMappingURL=types.d.ts.map