import { RequestHandler } from 'msw';
import { setupServer } from 'msw/node';

type SetupServer = ReturnType<typeof setupServer>;
type InitializeOptions = Parameters<SetupServer['listen']>[0];
declare function initialize(options?: InitializeOptions, initialHandlers?: RequestHandler[]): SetupServer;
declare function getWorker(): SetupServer;

type MswParameters = {
    [key: string]: any;
    msw?: RequestHandler[] | {
        handlers: RequestHandler[] | Record<string, RequestHandler | RequestHandler[]>;
    };
};
type Context = {
    parameters: MswParameters;
};
/**
 * @deprecated The `mswDecorator` is deprecated and will be removed in the next release. Please use the `mswLoader` instead.
 * More info: https://github.com/mswjs/msw-storybook-addon/blob/ec35e9371f8a56a27220838fba798b9001ac7fad/MIGRATION.md#mswdecorator-is-deprecated-in-favor-of-mswloader
 */
declare const mswDecorator: <Story extends (...args: any[]) => any>(storyFn: Story, context: Context) => any;

declare const mswLoader: (context: Context) => Promise<{}>;

declare function applyRequestHandlers(handlersListOrObject: Context['parameters']['msw']): void;

export { type Context, type InitializeOptions, type MswParameters, applyRequestHandlers, getWorker, initialize, mswDecorator, mswLoader };
