import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { ComputedRef } from 'vue';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { InjectionKey } from 'vue';
import { PropType } from 'vue';
import { PublicProps } from 'vue';

declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;

declare type __VLS_Prettify<T> = {
    [K in keyof T]: T[K];
} & {};

declare type __VLS_TypePropsToRuntimeProps<T> = {
    [K in keyof T]-?: {} extends Pick<T, K> ? {
        type: PropType<__VLS_NonUndefinedable<T[K]>>;
    } : {
        type: PropType<T[K]>;
        required: true;
    };
};

declare type __VLS_WithDefaults<P, D> = {
    [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
        default: D[K];
    }> : P[K];
};

declare type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare interface BoxProps {
    /**
     * Remove the padding around the entire Box.
     */
    disablePadding?: boolean;
    /**
     * Remove the padding on the left and right of the Box.
     */
    disableGutters?: boolean;
    /**
     * Remove the padding on the left and right of the Box.
     */
    disableElevation?: boolean;
    /**
     * Border radius style. Defaults to `rounded`.
     */
    radius?: 'none' | 'rounded';
}

declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ModuleProps>, {
variant: string;
includeDataviewPagination: boolean;
}>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ModuleProps>, {
variant: string;
includeDataviewPagination: boolean;
}>>> & Readonly<{}>, {
variant: "table" | "list" | "box" | "card";
includeDataviewPagination: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
    default?(_: {}): any;
}>;
export default _default;

declare interface Injection<T> {
    key: InjectionKey<T>;
}

declare interface InjectionWithDefaults<T> extends Injection<T> {
    defaults: T;
}

export declare const MODULE_INJECTION: InjectionWithDefaults<ModuleInjection>;

export declare interface ModuleInjection {
    /**
     * Module variant applied.
     */
    variant?: ComputedRef<ModuleVariants>;
    includeDataviewPagination?: ComputedRef<boolean>;
}

export declare interface ModuleProps extends BoxProps {
    /**
     * Variant applied.
     *
     * Options: `box`, `card`, `list`.
     */
    variant?: ModuleVariants;
    /**
     * Whether to include dataview pagination within the module.
     * By default the bottom pagination is not included.
     */
    includeDataviewPagination?: boolean;
}

export declare enum ModuleVariant {
    Box = "box",
    Table = "table",
    /**
     * @deprecated Card Modules are no longer a thing. You're probably looking for `<RadioGroup variant="card">`.
     */
    Card = "card",
    /**
     * @deprecated Only used with deprecated ListView component. Use `table` variant with `Table` component instead.
     */
    List = "list"
}

export declare type ModuleVariants = `${ModuleVariant}`;

export { }
