import { App } from 'vue';
import { AxiosInstance } from 'axios';
import { ColumnDefinition } from 'tabulator-tables';
import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { DirectiveBinding } from 'vue';
import { PublicProps } from 'vue';

declare const __VLS_base: DefineComponent<ContentProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    [x: string]: never;
}, string, PublicProps, Readonly<ContentProps> & Readonly<{
    [x: `on${Capitalize<string>}`]: ((...args: unknown[]) => any) | undefined;
}>, {
    title: ContentTitle[];
    bodyClass: string;
    titleClass: string;
    disableMinHeight: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_base_2: DefineComponent<ModalProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    [x: string]: never;
}, string, PublicProps, Readonly<ModalProps> & Readonly<{
    [x: `on${Capitalize<string>}`]: ((...args: unknown[]) => any) | undefined;
}>, {
    title: ModalTitle[];
    actions: ModalAction[];
    width: string;
    show: boolean;
    showClose: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_base_3: DefineComponent<TowserProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    [x: string]: never;
}, string, PublicProps, Readonly<TowserProps> & Readonly<{
    [x: `on${Capitalize<string>}`]: ((...args: unknown[]) => any) | undefined;
}>, {
    show: boolean;
    double: boolean;
    bodyWidth: number;
    body2Width: number;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_base_4: DefineComponent<MultiselectProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    select: (option: MultiselectOption | MultiselectOption[], id: string | null) => any;
    close: (value: any, id: string | null) => any;
    "update:modelValue": (value: any) => any;
    open: (id: string | null) => any;
    remove: (option: MultiselectOption | MultiselectOption[], id: string | null) => any;
    tag: (label: string, id: string | null) => any;
    "search-change": (query: string | null | undefined) => any;
}, string, PublicProps, Readonly<MultiselectProps> & Readonly<{
    onSelect?: ((option: MultiselectOption | MultiselectOption[], id: string | null) => any) | undefined;
    onClose?: ((value: any, id: string | null) => any) | undefined;
    "onUpdate:modelValue"?: ((value: any) => any) | undefined;
    onOpen?: ((id: string | null) => any) | undefined;
    onRemove?: ((option: MultiselectOption | MultiselectOption[], id: string | null) => any) | undefined;
    onTag?: ((label: string, id: string | null) => any) | undefined;
    "onSearch-change"?: ((query: string | null | undefined) => any) | undefined;
}>, {
    id: string | null;
    name: string;
    required: boolean;
    disabled: boolean;
    maxHeight: number;
    modelValue: any;
    max: number | false;
    tabindex: number;
    placeholder: string;
    allowEmpty: boolean;
    multiple: boolean;
    selectLabel: string;
    selectGroupLabel: string;
    selectedLabel: string;
    deselectLabel: string;
    deselectGroupLabel: string;
    showLabels: boolean;
    tagPlaceholder: string;
    searchable: boolean;
    internalSearch: boolean;
    clearOnSelect: boolean;
    hideSelected: boolean;
    resetAfter: boolean;
    closeOnSelect: boolean;
    taggable: boolean;
    tagPosition: "top" | "bottom";
    preselectFirst: boolean;
    preserveSearch: boolean;
    preventAutofocus: boolean;
    groupSelect: boolean;
    limit: number;
    optionsLimit: number;
    limitText: (count: number) => string;
    blockKeys: string[];
    filteringSortFunc: ((a: MultiselectOption, b: MultiselectOption) => number) | null;
    customLabel: (option: MultiselectOption, label?: string) => string;
    loading: boolean;
    spellcheck: boolean;
    openDirection: string;
    showNoOptions: boolean;
    showNoResults: boolean;
    showPointer: boolean;
    optionHeight: number;
    useTeleport: boolean;
    teleportTarget: string | object;
    contentWrapperClass: string | any[] | object;
    debounceSearch: boolean;
    debounceSecond: number;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_base_5: DefineComponent<TabProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    change: (value: string) => any;
    "update:modelValue": (value: string) => any;
}, string, PublicProps, Readonly<TabProps> & Readonly<{
    onChange?: ((value: string) => any) | undefined;
    "onUpdate:modelValue"?: ((value: string) => any) | undefined;
}>, {
    tabs: TabOption[];
    showSeparator: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_base_6: DefineComponent<ReportPrintOptionProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
    search: (...args: any[]) => void;
    "update:modelValue": (...args: any[]) => void;
}, string, PublicProps, Readonly<ReportPrintOptionProps> & Readonly<{
    onSearch?: ((...args: any[]) => any) | undefined;
    "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
}>, {
    modelValue: {
        startDate: string;
        endDate: string;
        dateType: string;
        isBS: boolean;
        paperSize?: string;
        paperOrientation?: string;
        showHeader?: boolean;
        showReport?: boolean;
        showReportOverview?: boolean;
        showPageCount?: boolean;
        showPrintDate?: boolean;
    };
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_base_7: DefineComponent<ReportPrintOptionLayoutProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ReportPrintOptionLayoutProps> & Readonly<{}>, {
    header: string;
    description: string;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;

declare const __VLS_export_10: DefineComponent<WizardProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
    "step-change": (step: number) => any;
}, string, PublicProps, Readonly<WizardProps> & Readonly<{
    "onStep-change"?: ((step: number) => any) | undefined;
}>, {
    totalSteps: number;
    currentStep: number;
    className: string;
    stepLabels: string[] | null;
    onStepChange: ((step: number) => void) | null;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_export_11: DefineComponent<LoaderProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<LoaderProps> & Readonly<{}>, {
    show: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_export_12: DefineComponent<UploadImageProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    [x: string]: never;
}, string, PublicProps, Readonly<UploadImageProps> & Readonly<{
    [x: `on${Capitalize<string>}`]: ((...args: unknown[]) => any) | undefined;
}>, {
    show: boolean;
    uploadSize: number;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_export_13: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    close: () => any;
    "update:show": (value: boolean) => any;
}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{
    onClose?: (() => any) | undefined;
    "onUpdate:show"?: ((value: boolean) => any) | undefined;
}>, {
    show: boolean;
    files: FileInput | FileInput[];
    initialIndex: number;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_export_14: DefineComponent<UploadFileProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    "update:modelValue": (value: File | File[] | null) => any;
}, string, PublicProps, Readonly<UploadFileProps> & Readonly<{
    "onUpdate:modelValue"?: ((value: File | File[] | null) => any) | undefined;
}>, {
    modelValue: File | File[] | null;
    columns: number;
    accept: string;
    multiple: boolean;
    maxFiles: number;
    dragAndDrop: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_export_15: DefineComponent<TextEditorProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    "update:modelValue": (value: string) => any;
}, string, PublicProps, Readonly<TextEditorProps> & Readonly<{
    "onUpdate:modelValue"?: ((value: string) => any) | undefined;
}>, {
    modelValue: string;
    menubar: boolean;
    statusbar: boolean;
    min_height: number;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_export_16: __VLS_WithSlots_4<typeof __VLS_base_4, __VLS_Slots_4>;

declare const __VLS_export_17: __VLS_WithSlots_5<typeof __VLS_base_5, __VLS_Slots_5>;

declare const __VLS_export_18: __VLS_WithSlots_6<typeof __VLS_base_6, __VLS_Slots_6>;

declare const __VLS_export_19: __VLS_WithSlots_7<typeof __VLS_base_7, __VLS_Slots_7>;

declare const __VLS_export_2: __VLS_WithSlots_2<typeof __VLS_base_2, __VLS_Slots_2>;

declare const __VLS_export_3: DefineComponent<SwitchProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    "update:modelValue": (value: boolean) => any;
}, string, PublicProps, Readonly<SwitchProps> & Readonly<{
    "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
}>, {
    modelValue: boolean;
    background: string;
    disable: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_export_4: DefineComponent<TabulatorProps, {
    reInitializeTabulator: () => void;
    print: () => void;
    exportTable: () => void;
    getSelectedData: () => any[];
    updateSelectedRow: (rows: any[]) => void;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    [x: string]: never;
}, string, PublicProps, Readonly<TabulatorProps> & Readonly<{
    [x: `on${Capitalize<string>}`]: ((...args: unknown[]) => any) | undefined;
}>, {
    action: boolean;
    data: TabulatorData[];
    columns: TabulatorHeader[];
    placeholder: string;
    paginationSize: number;
    paginationSizeSelector: number[];
    actionButtons: TabulatorAction[];
    heightOffset: number;
    actionMode: "frontend" | "api";
    showOptions: boolean;
    paginationType: "local" | "remote";
    apiEndpoint: string;
    queryParams: Record<string, any>;
    settingsButton: boolean;
    printButton: boolean;
    exportButton: boolean;
    sheetName: string;
    enableHeaderPrint: boolean;
    enableFooterPrint: boolean;
    enableHeaderBlock: boolean;
    enableFooterBlock: boolean;
    enableSelectable: boolean;
    disableFooter: boolean;
    maxSelectableRows: number | boolean;
    enableRangeSelect: boolean;
    selectionOverflowMode: "block" | "rolling";
    ajaxDelay: number;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_export_5: DefineComponent<ToggleProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    "update:modelValue": (value: boolean) => any;
}, string, PublicProps, Readonly<ToggleProps> & Readonly<{
    "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
}>, {
    width: string;
    modelValue: boolean;
    disable: boolean;
    onText: string;
    offText: string;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_export_6: __VLS_WithSlots_3<typeof __VLS_base_3, __VLS_Slots_3>;

declare const __VLS_export_7: DefineComponent<IconProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<IconProps> & Readonly<{}>, {
    size: number | string;
    color: string;
    strokeWidth: number;
    absoluteStrokeWidth: boolean;
    classValue: string;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_export_8: DefineComponent<DateSelectorProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
    "update:modelValue": (...args: any[]) => void;
    "update:isBS": (...args: any[]) => void;
}, string, PublicProps, Readonly<DateSelectorProps> & Readonly<{
    "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
    "onUpdate:isBS"?: ((...args: any[]) => any) | undefined;
}>, {
    disabled: boolean;
    modelValue: string;
    inputWidth: number;
    isBS: boolean;
    showToggle: boolean;
    defaultDate: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare const __VLS_export_9: DefineComponent<DateRangeProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
    search: (...args: any[]) => void;
    "update:modelValue": (...args: any[]) => void;
}, string, PublicProps, Readonly<DateRangeProps> & Readonly<{
    onSearch?: ((...args: any[]) => any) | undefined;
    "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
}>, {
    modelValue: {
        startDate: string;
        endDate: string;
        dateType: string;
        isBS: boolean;
    };
    searchOnLoad: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

declare type __VLS_Props = {
    show?: boolean;
    files?: FileInput | FileInput[];
    initialIndex?: number;
};

declare type __VLS_Slots = {} & {
    'action-before'?: (props: typeof __VLS_7) => any;
} & {
    'action-after'?: (props: typeof __VLS_9) => any;
} & {
    body?: (props: typeof __VLS_11) => any;
};

declare type __VLS_Slots_2 = {} & {
    default?: (props: typeof __VLS_21) => any;
};

declare type __VLS_Slots_3 = {} & {
    default?: (props: typeof __VLS_19) => any;
} & {
    body2?: (props: typeof __VLS_21) => any;
};

declare type __VLS_Slots_4 = {} & {
    caret?: (props: typeof __VLS_1) => any;
} & {
    clear?: (props: typeof __VLS_3) => any;
} & {
    selection?: (props: typeof __VLS_5) => any;
} & {
    tag?: (props: typeof __VLS_7) => any;
} & {
    limit?: (props: typeof __VLS_9) => any;
} & {
    loading?: (props: typeof __VLS_17) => any;
} & {
    singleLabel?: (props: typeof __VLS_19) => any;
} & {
    placeholder?: (props: typeof __VLS_21) => any;
} & {
    beforeList?: (props: typeof __VLS_35) => any;
} & {
    maxElements?: (props: typeof __VLS_37) => any;
} & {
    option?: (props: typeof __VLS_39) => any;
} & {
    option?: (props: typeof __VLS_41) => any;
} & {
    noResult?: (props: typeof __VLS_43) => any;
} & {
    noOptions?: (props: typeof __VLS_45) => any;
} & {
    afterList?: (props: typeof __VLS_47) => any;
};

declare type __VLS_Slots_5 = {} & {
    [K in NonNullable<typeof __VLS_2>]?: (props: typeof __VLS_3) => any;
};

declare type __VLS_Slots_6 = {} & {
    'before-date-type'?: (props: typeof __VLS_6) => any;
} & {
    'after-date-type'?: (props: typeof __VLS_19) => any;
} & {
    'after-from-date'?: (props: typeof __VLS_46) => any;
} & {
    'after-to-date'?: (props: typeof __VLS_73) => any;
} & {
    'report-section'?: (props: typeof __VLS_75) => any;
} & {
    'before-paper-size'?: (props: typeof __VLS_77) => any;
} & {
    'after-paper-size'?: (props: typeof __VLS_90) => any;
} & {
    'after-page-orientation'?: (props: typeof __VLS_103) => any;
} & {
    'after-show-header'?: (props: typeof __VLS_116) => any;
} & {
    'after-show-report-overview'?: (props: typeof __VLS_129) => any;
} & {
    'after-show-page-count'?: (props: typeof __VLS_142) => any;
} & {
    'after-show-print-date'?: (props: typeof __VLS_155) => any;
} & {
    'print-section'?: (props: typeof __VLS_157) => any;
};

declare type __VLS_Slots_7 = {} & {
    default?: (props: typeof __VLS_1) => any;
};

declare type __VLS_WithSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithSlots_2<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithSlots_3<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithSlots_4<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithSlots_5<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithSlots_6<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithSlots_7<T, S> = T & {
    new (): {
        $slots: S;
    };
};

export declare interface ContentAction {
    title: string;
    emit: string;
    class?: string;
}

export declare const ContentLayout: typeof __VLS_export;

export declare interface ContentProps {
    title: ContentTitle[];
    actions?: ContentAction[];
    bodyClass?: string;
    titleClass?: string;
    disableMinHeight?: boolean;
}

export declare interface ContentTitle {
    name: string;
    link?: string;
    count?: number;
}

export declare const CreateDebounce: <T>(callback: (arg?: T) => void, delay: number) => DebounceHandler<T>;

export declare const CreateShortCutKey: (keyStructure: string, callback: (e: KeyboardEvent) => void) => {
    destroy(): void;
};

export declare const currencyFormatter: (value: number | string, withDisplayCurrency?: boolean, displayCurrency?: string, format?: FormatType, structure?: StructureType) => string;

export declare const CurrencyFormatterPlugin: {
    install(app: App): void;
};

declare interface CurrencyInputElement extends HTMLInputElement {
    eventCleanUp?: () => void;
}

export declare const currencyUnformatter: (formattedValue: string, withDisplayCurrency?: boolean, displayCurrency?: string, format?: FormatType) => number;

declare interface CustomHTMLElement extends HTMLElement {
    __tooltipHandlers?: {
        showTooltip: () => void;
        hideTooltip: () => void;
        clearShowTimeout: () => void;
        createTooltip: () => void;
        updateBinding: (binding: DirectiveBinding<TooltipBindingValue>) => void;
    };
}

export declare const DateRange: typeof __VLS_export_9;

export declare interface DateRangeProps {
    modelValue: {
        startDate: string;
        endDate: string;
        dateType: string;
        isBS: boolean;
    };
    searchOnLoad: boolean;
}

export declare const DateSelector: typeof __VLS_export_8;

export declare interface DateSelectorProps {
    modelValue: string;
    inputWidth?: number;
    isBS?: boolean;
    showToggle?: boolean;
    disabled?: boolean;
    classValue?: string;
    defaultDate?: boolean;
}

declare type DebounceHandler<T> = {
    run: (arg?: T) => void;
    cancel: () => void;
};

export declare type FileInput = PreviewImageDetail | File | string;

export declare const FilePreview: typeof __VLS_export_13;

export declare const FileUpload: typeof __VLS_export_14;

export declare const FocusNextPlugin: {
    install(app: App): void;
};

export declare type FormatType = "usa" | "euro";

declare interface HTMLElementWithState extends HTMLElement {
    _observer?: MutationObserver;
    _timeout?: number;
}

export declare interface IconProps {
    name: string;
    size?: number | string;
    color?: string;
    strokeWidth?: number;
    absoluteStrokeWidth?: boolean;
    classValue?: string;
}

export declare const Icons: typeof __VLS_export_7;

export declare const InputCurrency: {
    mounted(el: CurrencyInputElement, binding: DirectiveBinding): void;
    updated(el: HTMLInputElement, binding: DirectiveBinding): void;
};

export declare const InputError: {
    mounted: (el: HTMLElement, binding: DirectiveBinding) => void;
    updated: (el: HTMLElement, binding: DirectiveBinding) => void;
};

export declare const InputSelect: {
    mounted(el: HTMLElement): void;
    unmounted(el: HTMLElement): void;
};

export declare const Loader: typeof __VLS_export_11;

export declare interface LoaderProps {
    show: boolean;
}

export declare const Modal: typeof __VLS_export_2;

export declare interface ModalAction {
    emit: string;
    title: string;
    class?: string;
}

export declare interface ModalProps {
    title: ModalTitle[];
    actions?: ModalAction[];
    show: boolean;
    width?: string;
    showClose?: boolean;
}

export declare interface ModalTitle {
    name: string;
    link?: string;
}

export declare const Multiselect: typeof __VLS_export_16;

declare interface MultiselectOption {
    [key: string]: any;
    $isLabel?: boolean;
    $isDisabled?: boolean;
    isTag?: boolean;
    label?: string;
}

declare interface MultiselectProps {
    modelValue?: any;
    options: MultiselectOption[];
    name?: string;
    selectLabel?: string;
    selectGroupLabel?: string;
    selectedLabel?: string;
    deselectLabel?: string;
    deselectGroupLabel?: string;
    showLabels?: boolean;
    placeholder?: string;
    tagPlaceholder?: string;
    multiple?: boolean;
    searchable?: boolean;
    internalSearch?: boolean;
    clearOnSelect?: boolean;
    hideSelected?: boolean;
    allowEmpty?: boolean;
    resetAfter?: boolean;
    closeOnSelect?: boolean;
    taggable?: boolean;
    tagPosition?: "top" | "bottom";
    preselectFirst?: boolean;
    preserveSearch?: boolean;
    preventAutofocus?: boolean;
    groupSelect?: boolean;
    limit?: number;
    max?: number | false;
    optionsLimit?: number;
    maxHeight?: number;
    limitText?: (count: number) => string;
    trackBy?: string;
    label?: string;
    id?: string | null;
    tabindex?: number;
    groupValues?: string;
    groupLabel?: string;
    blockKeys?: string[];
    filteringSortFunc?: ((a: MultiselectOption, b: MultiselectOption) => number) | null;
    customLabel?: (option: MultiselectOption, label?: string) => string;
    loading?: boolean;
    disabled?: boolean;
    spellcheck?: boolean;
    openDirection?: string;
    showNoOptions?: boolean;
    showNoResults?: boolean;
    required?: boolean;
    showPointer?: boolean;
    optionHeight?: number;
    useTeleport?: boolean;
    teleportTarget?: string | object;
    contentWrapperClass?: string | any[] | object;
    debounceSearch?: boolean;
    debounceSecond?: number;
}

export declare const NumbertoWordPlugin: {
    install(app: App): void;
};

export declare const numberToWords: (input: number | string, nepali?: boolean, currencyConverter?: boolean) => string;

export declare interface PreviewFileProps {
    url: string;
    name: string;
    type: "image" | "pdf" | "other";
    isBlob: boolean;
}

export declare type PreviewImageDetail = {
    name: string;
    url: string;
    type?: "image" | "pdf" | "other";
    isBlob?: boolean;
};

export declare const ReportPrintOption: typeof __VLS_export_18;

export declare const ReportPrintOptionLayout: typeof __VLS_export_19;

export declare interface ReportPrintOptionLayoutProps {
    header?: string;
    description?: string;
}

export declare interface ReportPrintOptionProps {
    modelValue?: {
        startDate: string;
        endDate: string;
        dateType: string;
        isBS: boolean;
        paperSize?: string;
        paperOrientation?: string;
        showHeader?: boolean;
        showReport?: boolean;
        showReportOverview?: boolean;
        showPageCount?: boolean;
        showPrintDate?: boolean;
    };
}

export declare const ScrollbarAnimateDropdown: {
    mounted(el: HTMLElementWithState): void;
    unmounted(el: HTMLElementWithState): void;
};

export declare const ScrollbarScroll: {
    mounted(el: HTMLElement, _binding: DirectiveBinding): void;
    unmounted(el: HTMLElement): void;
};

export declare type StructureType = "nepali" | "foreign";

export declare const Switch: typeof __VLS_export_3;

export declare interface SwitchProps {
    modelValue: boolean;
    background?: string;
    disable?: boolean;
}

export declare const Tab: typeof __VLS_export_17;

export declare interface TabOption {
    id: string;
    name: string;
    [key: string]: any;
}

export declare interface TabProps {
    modelValue: string;
    tabs: TabOption[];
    showSeparator?: boolean;
}

export declare const Tabulator: typeof __VLS_export_4;

export declare interface TabulatorAction {
    name: string;
    emit: string;
    class?: string;
}

export declare interface TabulatorData {
    id: string | number;
    action?: {
        name: string;
        emit: string;
        class?: string;
    }[];
    [key: string]: any;
}

export declare interface TabulatorHeader extends ColumnDefinition {
    isMandatory?: boolean;
}

export declare interface TabulatorModalSettings {
    title: Array<{
        name: string;
    }>;
    action: Array<{
        title: string;
        emit: string;
        class?: string;
    }>;
}

export declare interface TabulatorProps {
    data?: TabulatorData[];
    columns: TabulatorHeader[];
    placeholder?: string;
    paginationSize?: number;
    paginationSizeSelector?: number[];
    action?: boolean;
    actionButtons?: TabulatorAction[];
    heightOffset?: number;
    actionMode?: "frontend" | "api";
    showOptions?: boolean;
    paginationType?: "local" | "remote";
    apiEndpoint?: string;
    apiInstance?: AxiosInstance;
    queryParams?: Record<string, any>;
    settingsButton?: boolean;
    printButton?: boolean;
    exportButton?: boolean;
    sheetName?: string;
    headerContent?: string;
    footerContent?: string;
    enableHeaderPrint?: boolean;
    enableFooterPrint?: boolean;
    enableHeaderBlock?: boolean;
    enableFooterBlock?: boolean;
    enableSelectable?: boolean;
    disableFooter?: boolean;
    maxSelectableRows?: number | boolean;
    enableRangeSelect?: boolean;
    selectionOverflowMode?: "block" | "rolling";
    ajaxDelay?: number;
}

export declare const TextEditor: typeof __VLS_export_15;

export declare interface TextEditorProps {
    modelValue: string;
    menubar?: boolean;
    statusbar?: boolean;
    min_height?: number;
}

export declare const toast: {
    error(msg: string, delay?: number): void;
    warn(msg: string, delay?: number): void;
    success(msg: string, delay?: number): void;
    info(msg: string, delay?: number): void;
};

export declare const ToastPlugin: {
    install(app: App): void;
};

export declare const Toggle: typeof __VLS_export_5;

export declare interface ToggleProps {
    modelValue: boolean;
    onText?: string;
    offText?: string;
    width?: string;
    disable?: boolean;
}

export declare const Tooltip: {
    mounted(el: CustomHTMLElement, binding: DirectiveBinding<TooltipBindingValue>): void;
    updated(el: CustomHTMLElement, binding: DirectiveBinding<TooltipBindingValue>): void;
    unmounted(el: CustomHTMLElement): void;
};

declare interface TooltipBindingValue {
    content: string;
    raw?: boolean;
    preferredPosition?: "top" | "bottom" | "left" | "right";
}

export declare const Towser: typeof __VLS_export_6;

export declare interface TowserAction {
    emit: string;
    title: string;
    class?: string;
}

export declare interface TowserProps {
    show: boolean;
    title: TowserTitle[];
    actions?: TowserAction[];
    double?: boolean;
    bodyWidth?: number;
    body2Width?: number;
}

export declare interface TowserTitle {
    name: string;
    link?: string;
}

export declare interface UploadFileProps {
    modelValue: File | File[] | null;
    accept?: string;
    multiple?: boolean;
    maxFiles?: number;
    dragAndDrop?: boolean;
    columns?: number;
}

export declare const UploadImage: typeof __VLS_export_12;

export declare interface UploadImageProps {
    show: boolean;
    uploadSize: number;
}

export declare class WebSocketWrapper {
    private socket;
    private url;
    private isConnected;
    private initPromise;
    setURL(url: string): void;
    init(onError?: (error: Event) => void): Promise<WebSocketWrapper>;
    onMessage(callback: (message: string) => void): Promise<WebSocketWrapper>;
    sendMessage(message: string): Promise<void>;
    close(): void;
    getConnectionStatus(): boolean;
}

export declare const Wizard: typeof __VLS_export_10;

export declare interface WizardProps {
    totalSteps?: number;
    currentStep?: number;
    className?: string;
    stepLabels?: string[] | null;
    onStepChange?: ((step: number) => void) | null;
}

export { }


declare global {
    interface Window {
        XLSX: any;
    }
}


declare module "@vue/runtime-core" {
    interface ComponentCustomProperties {
        $focusNext: typeof focusNext;
        $currencyFormatter: typeof currencyFormatter;
        $currencyUnformatter: typeof currencyUnformatter;
        $numToWords: typeof numToWords;
        $toast: typeof toast;
    }
}
