import { Component } from 'vue';
import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { PublicProps } from 'vue';
import { RouteLocationNormalizedLoaded } from 'vue-router';
import { Router } from 'vue-router';
import { VNode } from 'vue';

declare const __VLS_component: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<Props> & Readonly<{}>, {
defaultStory: string;
useRouter: {
route: RouteLocationNormalizedLoaded;
router: Router;
};
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;

declare const __VLS_component_2: DefineComponent<Props_2, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<Props_2> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLElement>;

declare const __VLS_component_3: DefineComponent<Props_3, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<Props_3> & Readonly<{}>, {
gap: "xs" | "sm" | "base" | "lg" | "xl";
wrap: boolean;
center: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;

declare const __VLS_component_4: DefineComponent<Props_4, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<Props_4> & Readonly<{}>, {
title: string;
code: string;
language: string;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;

declare type __VLS_Props = {
    code: string;
    language?: string;
};

declare function __VLS_template(): {
    attrs: Partial<{}>;
    slots: {
        title?(_: {}): any;
        title?(_: {}): any;
        story?(_: {
            story: StoryDefinition | undefined;
        }): any;
    };
    refs: {};
    rootEl: HTMLDivElement;
};

declare function __VLS_template_2(): {
    attrs: Partial<{}>;
    slots: {
        default?(_: {}): any;
    };
    refs: {};
    rootEl: HTMLElement;
};

declare function __VLS_template_3(): {
    attrs: Partial<{}>;
    slots: {
        default?(_: {}): any;
    };
    refs: {};
    rootEl: HTMLDivElement;
};

declare function __VLS_template_4(): {
    attrs: Partial<{}>;
    slots: {
        default?(_: {}): any;
    };
    refs: {};
    rootEl: HTMLDivElement;
};

declare type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;

declare type __VLS_TemplateResult_2 = ReturnType<typeof __VLS_template_2>;

declare type __VLS_TemplateResult_3 = ReturnType<typeof __VLS_template_3>;

declare type __VLS_TemplateResult_4 = ReturnType<typeof __VLS_template_4>;

declare type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithTemplateSlots_2<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithTemplateSlots_3<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare type __VLS_WithTemplateSlots_4<T, S> = T & {
    new (): {
        $slots: S;
    };
};

export declare function createStory(config: StoryConfig): StoryConfig;

export declare function createStoryGroup(title: string, description: string, stories: StoryConfig[]): StoryGroup;

export declare function generateCode(story: StoryConfig, options?: StoryConfigOptions): string;

declare interface Props {
    stories: StoryDefinition[];
    defaultStory?: string;
    useRouter?: {
        route: RouteLocationNormalizedLoaded;
        router: Router;
    };
}

declare interface Props_2 {
    title: string;
    description?: string;
}

declare interface Props_3 {
    gap?: 'xs' | 'sm' | 'base' | 'lg' | 'xl';
    wrap?: boolean;
    center?: boolean;
}

declare interface Props_4 {
    code?: string | undefined;
    language?: string;
    title?: string | undefined;
}

declare interface Props_5 {
    story: StoryConfig;
    options?: StoryConfigOptions | undefined;
}

declare interface Props_6 {
    group: StoryGroup;
    options?: StoryConfigOptions | undefined;
    showcaseProps?: Record<string, unknown>;
}

export declare const StoryCodeBlock: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
language: string;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;

export declare interface StoryConfig {
    title: string;
    description?: string;
    component?: Component;
    props?: Record<string, unknown>;
    slots?: Record<string, string | (() => VNode | VNode[])>;
    wrapperClass?: string;
}

export declare interface StoryConfigOptions {
    componentPrefix?: string;
}

export declare interface StoryDefinition {
    name: string;
    component: Component;
    description?: string;
}

export declare interface StoryGroup {
    title: string;
    description?: string;
    stories: StoryConfig[];
}

export declare const StoryGroupRenderer: DefineComponent<Props_6, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<Props_6> & Readonly<{}>, {
options: StoryConfigOptions;
showcaseProps: Record<string, unknown>;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLElement>;

export declare const StoryRenderer: DefineComponent<Props_5, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<Props_5> & Readonly<{}>, {
options: StoryConfigOptions;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;

export declare const StorySection: __VLS_WithTemplateSlots_2<typeof __VLS_component_2, __VLS_TemplateResult_2["slots"]>;

export declare const StoryShowcase: __VLS_WithTemplateSlots_3<typeof __VLS_component_3, __VLS_TemplateResult_3["slots"]>;

export declare const StoryShowcaseItem: __VLS_WithTemplateSlots_4<typeof __VLS_component_4, __VLS_TemplateResult_4["slots"]>;

export declare const StoryViewer: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;

export { }
