import { SvelteRenderer } from '@storybook/svelte';
export * from '@storybook/svelte';
import { StorybookConfig as StorybookConfig$1, CompatibleString, NamedOrDefaultProjectAnnotations, NormalizedProjectAnnotations } from 'storybook/internal/types';
import { BuilderOptions, StorybookConfigVite } from '@storybook/builder-vite';

declare function enhance(form: HTMLFormElement): {
    destroy(): void;
};

declare function goto(...args: any[]): Promise<void>;
declare function invalidate(...args: any[]): Promise<void>;
declare function invalidateAll(): Promise<void>;

type FrameworkName = CompatibleString<'@storybook/sveltekit'>;
type BuilderName = CompatibleString<'@storybook/builder-vite'>;
type FrameworkOptions = {
    builder?: BuilderOptions;
    /**
     * Enable or disable automatic documentation generation for component properties, events, and
     * slots. When disabled, Storybook will skip the docgen processing step during build, which can
     * improve build performance.
     *
     * @default true
     */
    docgen?: boolean;
};
type StorybookConfigFramework = {
    framework: FrameworkName | {
        name: FrameworkName;
        options: FrameworkOptions;
    };
    core?: StorybookConfig$1['core'] & {
        builder?: BuilderName | {
            name: BuilderName;
            options: BuilderOptions;
        };
    };
};
type StorybookConfig = Omit<StorybookConfig$1, keyof StorybookConfigVite | keyof StorybookConfigFramework> & StorybookConfigVite & StorybookConfigFramework;
type NormalizedHrefConfig = {
    callback: (to: string, event: Event) => void;
    asRegex?: boolean;
};
type HrefConfig = NormalizedHrefConfig | NormalizedHrefConfig['callback'];
/**
 * Copied from:
 * {@link https://github.com/sveltejs/kit/blob/7bb41aa4263b057a8912f4cdd35db03755d37342/packages/kit/types/index.d.ts#L1102-L1143}
 */
interface Page<Params extends Record<string, string> = Record<string, string>, RouteId extends string | null = string | null> {
    url: URL;
    params: Params;
    route: {
        id: RouteId;
    };
    status: number;
    error: Error | null;
    data: Record<string, any>;
    state: Record<string, any>;
    form: any;
}
/**
 * Copied from:
 * {@link https://github.com/sveltejs/kit/blob/7bb41aa4263b057a8912f4cdd35db03755d37342/packages/kit/types/index.d.ts#L988}
 */
interface NavigationTarget {
    params: Record<string, string> | null;
    route: {
        id: string | null;
    };
    url: URL;
}
/**
 * Copied from:
 * {@link https://github.com/sveltejs/kit/blob/7bb41aa4263b057a8912f4cdd35db03755d37342/packages/kit/types/index.d.ts#L1017C9-L1017C89}
 */
type NavigationType = 'enter' | 'form' | 'leave' | 'link' | 'goto' | 'popstate';
/**
 * Copied from:
 * {@link https://github.com/sveltejs/kit/blob/7bb41aa4263b057a8912f4cdd35db03755d37342/packages/kit/types/index.d.ts#L1017C9-L1017C89}
 */
interface Navigation {
    from: NavigationTarget | null;
    to: NavigationTarget | null;
    type: Exclude<NavigationType, 'enter'>;
    willUnload: boolean;
    delta?: number;
    complete: Promise<void>;
}
type SvelteKitParameters = Partial<{
    hrefs: Record<string, HrefConfig>;
    state: {
        page: Partial<Page>;
        navigating: Partial<Navigation>;
        updated: {
            current: boolean;
        };
    };
    /**
     * @deprecated
     * @see {@link https://svelte.dev/docs/kit/$app-stores}
     */
    stores: {
        page: Record<string, any>;
        navigating: Record<string, any>;
        updated: boolean;
    };
    navigation: {
        goto: typeof goto;
        invalidate: typeof invalidate;
        invalidateAll: typeof invalidateAll;
        afterNavigate: Record<string, any>;
    };
    forms: {
        enhance: typeof enhance;
    };
}>;

/**
 * Function that sets the globalConfig of your storybook. The global config is the preview module of
 * your .storybook folder.
 *
 * It should be run a single time, so that your global config (e.g. decorators) is applied to your
 * stories when using `composeStories` or `composeStory`.
 *
 * Example:
 *
 * ```jsx
 * // setup-file.js
 * import { setProjectAnnotations } from '@storybook/sveltekit';
 * import projectAnnotations from './.storybook/preview';
 *
 * setProjectAnnotations(projectAnnotations);
 * ```
 *
 * @param projectAnnotations - E.g. (import projectAnnotations from '../.storybook/preview')
 */
declare function setProjectAnnotations(projectAnnotations: NamedOrDefaultProjectAnnotations<any> | NamedOrDefaultProjectAnnotations<any>[]): NormalizedProjectAnnotations<SvelteRenderer>;

export { type FrameworkOptions, type HrefConfig, type NormalizedHrefConfig, type StorybookConfig, type SvelteKitParameters, setProjectAnnotations };
