import { SvelteComponentTyped } from "svelte";
import { type ComponentProps } from 'svelte';
import type { MenuOption } from '../types/index.js';
declare class __sveltets_Render<TValue> {
    props(): {
        [x: string]: any;
        options: MenuOption<TValue>[];
        value?: TValue[] | undefined;
        indeterminateSelected?: TValue[] | undefined;
        duration?: number | undefined;
        autoFocusSearch?: boolean | undefined;
        placeholder?: string | undefined;
        optionProps?: Partial<{
            [x: string]: any;
            checked: boolean;
            indeterminate?: boolean | undefined;
            disabled?: boolean | undefined;
            variant?: "checkbox" | "checkmark" | "fill" | undefined;
            classes?: {
                root?: string;
                checkbox?: ComponentProps<import("./Checkbox.svelte").default>["classes"];
                container?: string;
            } | undefined;
        }> | undefined;
        infiniteScroll?: boolean | undefined;
        max?: number | undefined | undefined;
        maintainOrder?: boolean | undefined;
        mode?: "actions" | "immediate" | undefined;
        cancelButtonProps?: {
            [x: string]: any;
            type?: "button" | "submit" | "reset" | undefined;
            href?: string | undefined | undefined;
            target?: string | undefined | undefined;
            fullWidth?: boolean | undefined;
            icon?: import("../utils/icons").IconInput;
            iconOnly?: boolean | undefined;
            actions?: import("@layerstack/svelte-actions").Actions<HTMLAnchorElement | HTMLButtonElement> | undefined;
            loading?: boolean | undefined;
            disabled?: boolean | undefined;
            rounded?: import("../types/index.js").ButtonRounded | undefined;
            variant?: import("../types/index.js").ButtonVariant | undefined;
            size?: import("../types/index.js").ButtonSize | undefined;
            color?: import("../types/index.js").ButtonColor | undefined;
            classes?: {
                root?: string;
                icon?: string;
                loading?: string;
            } | undefined;
        } | undefined;
        applyButtonProps?: {
            [x: string]: any;
            type?: "button" | "submit" | "reset" | undefined;
            href?: string | undefined | undefined;
            target?: string | undefined | undefined;
            fullWidth?: boolean | undefined;
            icon?: import("../utils/icons").IconInput;
            iconOnly?: boolean | undefined;
            actions?: import("@layerstack/svelte-actions").Actions<HTMLAnchorElement | HTMLButtonElement> | undefined;
            loading?: boolean | undefined;
            disabled?: boolean | undefined;
            rounded?: import("../types/index.js").ButtonRounded | undefined;
            variant?: import("../types/index.js").ButtonVariant | undefined;
            size?: import("../types/index.js").ButtonSize | undefined;
            color?: import("../types/index.js").ButtonColor | undefined;
            classes?: {
                root?: string;
                icon?: string;
                loading?: string;
            } | undefined;
        } | undefined;
        classes?: {
            root?: string;
            search?: string;
            options?: string;
            actions?: string;
        } | undefined;
        onApply?: ((ctx: {
            value: TValue[];
            selection: {
                selected: {} | unknown[] | null;
                setSelected: (values: unknown[]) => void;
                toggleSelected: (value: unknown) => void;
                isSelected: (value: unknown) => boolean;
                isDisabled: (value: unknown) => boolean;
                toggleAll: () => void;
                isAllSelected: () => boolean;
                isAnySelected: () => boolean;
                isMaxSelected: () => boolean;
                clear: () => void;
                reset: () => void;
                all: import("svelte/store").Writable<unknown[]>;
            };
            indeterminate: Set<TValue>;
            original: {
                selected: MenuOption<TValue>[];
                unselected: MenuOption<TValue>[];
            };
        }) => Promise<void>) | undefined;
        searchText?: string | undefined;
        search?: boolean | ((text: string, options: MenuOption<TValue>[]) => Promise<MenuOption<TValue>[]>) | undefined;
        clear?: (() => void) | undefined;
    };
    events(): {
        change: CustomEvent<{
            value: TValue[];
            selection: {
                selected: {} | unknown[] | null;
                setSelected: (values: unknown[]) => void;
                toggleSelected: (value: unknown) => void;
                isSelected: (value: unknown) => boolean;
                isDisabled: (value: unknown) => boolean;
                toggleAll: () => void;
                isAllSelected: () => boolean;
                isAnySelected: () => boolean;
                isMaxSelected: () => boolean;
                clear: () => void;
                reset: () => void;
                all: import("svelte/store").Writable<unknown[]>;
            };
            indeterminate: Set<TValue>;
            original: {
                selected: MenuOption<TValue>[];
                unselected: MenuOption<TValue>[];
            };
        }>;
        cancel: CustomEvent<null>;
    } & {
        [evt: string]: CustomEvent<any>;
    };
    slots(): {
        beforeOptions: {
            selection: {
                selected: {} | unknown[] | null;
                setSelected: (values: unknown[]) => void;
                toggleSelected: (value: unknown) => void;
                isSelected: (value: unknown) => boolean;
                isDisabled: (value: unknown) => boolean;
                toggleAll: () => void;
                isAllSelected: () => boolean;
                isAnySelected: () => boolean;
                isMaxSelected: () => boolean;
                clear: () => void;
                reset: () => void;
                all: import("svelte/store").Writable<unknown[]>;
            };
        };
        option: {
            option: unknown;
            label: any;
            value: TValue[];
            checked: any;
            indeterminate: any;
            disabled: any;
            onChange: () => void;
        };
        afterOptions: {
            selection: {
                selected: {} | unknown[] | null;
                setSelected: (values: unknown[]) => void;
                toggleSelected: (value: unknown) => void;
                isSelected: (value: unknown) => boolean;
                isDisabled: (value: unknown) => boolean;
                toggleAll: () => void;
                isAllSelected: () => boolean;
                isAnySelected: () => boolean;
                isMaxSelected: () => boolean;
                clear: () => void;
                reset: () => void;
                all: import("svelte/store").Writable<unknown[]>;
            };
        };
        actions: {
            selection: {
                selected: {} | unknown[] | null;
                setSelected: (values: unknown[]) => void;
                toggleSelected: (value: unknown) => void;
                isSelected: (value: unknown) => boolean;
                isDisabled: (value: unknown) => boolean;
                toggleAll: () => void;
                isAllSelected: () => boolean;
                isAnySelected: () => boolean;
                isMaxSelected: () => boolean;
                clear: () => void;
                reset: () => void;
                all: import("svelte/store").Writable<unknown[]>;
            };
            searchText: string;
        };
    };
}
export type MultiSelectProps<TValue> = ReturnType<__sveltets_Render<TValue>['props']>;
export type MultiSelectEvents<TValue> = ReturnType<__sveltets_Render<TValue>['events']>;
export type MultiSelectSlots<TValue> = ReturnType<__sveltets_Render<TValue>['slots']>;
export default class MultiSelect<TValue> extends SvelteComponentTyped<MultiSelectProps<TValue>, MultiSelectEvents<TValue>, MultiSelectSlots<TValue>> {
    get clear(): () => void;
}
export {};
