import * as _palmares_core_dist_src_index_CkvPmDl3 from '@palmares/core/dist/src/index-CkvPmDl3';
import { t as ServersSettingsType, A as AllServerSettingsType, B as BaseRouter } from './index-CyBsO7TM.cjs';
import * as _palmares_core from '@palmares/core';
import { Domain, ExtractModifierArguments } from '@palmares/core';

type ServerDomain = Domain<[typeof serverDomainModifier]> & Partial<ExtractModifierArguments<[typeof serverDomainModifier]>>;

declare const serverDomainModifier: {
    new (): {
        load: (settings: unknown) => void | Promise<void> | ((args: _palmares_core.DomainReadyFunctionArgs<unknown, any>) => void | Promise<void>) | Promise<(args: _palmares_core.DomainReadyFunctionArgs<unknown, any>) => void | Promise<void>>;
        ready: (args: _palmares_core.DomainReadyFunctionArgs<unknown, any>) => void | Promise<void>;
        close: (() => void | Promise<void>) | undefined;
        commands: _palmares_core.DefaultCommandType | undefined;
        instances?: _palmares_core.Domain<any>[];
        name: string;
        path: string;
        isLoaded: boolean;
        modifiers: {
            getRoutes: () => Promise<BaseRouter<any, any, any, any, any>> | BaseRouter<any, any, any, any, any> | Omit<BaseRouter<any, any, any, any, any>, never>;
            /**
             * Router interceptors are used to retrieve the information metadata about all of the routes inside of the
             * application, this way you can dynamically create routers and paths when you start the application.
             * Imagine building a swagger documentation, you can intercept it and build the json documentation before actually
             * running the server.
             */
            routerInterceptor?: (router: BaseRouter["__completePaths"]) => Promise<void>;
        };
        __isReady: boolean;
        __isClosed: boolean;
    };
    toJSON: () => {
        name: string;
        path: string;
    };
    $$type: string;
    __instance: _palmares_core.Domain<any>;
} & (new () => {
    load: (settings: unknown) => void | Promise<void> | ((args: _palmares_core.DomainReadyFunctionArgs<unknown, any>) => void | Promise<void>) | Promise<(args: _palmares_core.DomainReadyFunctionArgs<unknown, any>) => void | Promise<void>>;
    ready: (args: _palmares_core.DomainReadyFunctionArgs<unknown, any>) => void | Promise<void>;
    close: (() => void | Promise<void>) | undefined;
    commands: _palmares_core.DefaultCommandType | undefined;
    instances?: _palmares_core.Domain<any>[];
    name: string;
    path: string;
    isLoaded: boolean;
    modifiers: {
        getRoutes: () => Promise<BaseRouter<any, any, any, any, any>> | BaseRouter<any, any, any, any, any> | Omit<BaseRouter<any, any, any, any, any>, never>;
        /**
         * Router interceptors are used to retrieve the information metadata about all of the routes inside of the
         * application, this way you can dynamically create routers and paths when you start the application.
         * Imagine building a swagger documentation, you can intercept it and build the json documentation before actually
         * running the server.
         */
        routerInterceptor?: (router: BaseRouter["__completePaths"]) => Promise<void>;
    };
    __isReady: boolean;
    __isClosed: boolean;
});
declare const serverDomain: {
    new (): {
        load: (_: ServersSettingsType) => Promise<undefined>;
        ready: (args: _palmares_core.DomainReadyFunctionArgs<unknown, any>) => void | Promise<void>;
        close: (() => void | Promise<void>) | undefined;
        commands: {
            readonly runserver: {
                readonly description: "Start the server in development mode";
                readonly keywordArgs: {
                    readonly port: {
                        readonly description: "The port to run the server on";
                        readonly type: "number";
                        readonly default: 4000;
                        readonly hasFlag: true;
                    };
                };
                readonly positionalArgs: undefined;
                readonly handler: () => {
                    new (domains: _palmares_core.Domain[], settings: _palmares_core.SettingsType2): {
                        start: (configureCleanup: (args?: any) => Promise<void> | void) => Promise<void>;
                        load: (args: {
                            settings: AllServerSettingsType;
                            commandLineArgs: {
                                keywordArgs: {
                                    port?: number;
                                };
                                positionalArgs: object;
                            };
                            domains: ServerDomain[];
                        }) => Promise<void>;
                        close: () => Promise<void>;
                        baseAppServer: _palmares_core_dist_src_index_CkvPmDl3.B;
                    };
                    $$type: string;
                };
            };
            readonly serverless: {
                readonly description: "Generate the serverless configuration from the server";
                readonly keywordArgs: undefined;
                readonly positionalArgs: undefined;
                readonly handler: ({ domains, settings }: _palmares_core.DomainHandlerFunctionArgs) => Promise<void>;
            };
        } | undefined;
        instances?: _palmares_core.Domain<any>[];
        name: string;
        path: string;
        isLoaded: boolean;
        modifiers: unknown;
        __isReady: boolean;
        __isClosed: boolean;
    };
    toJSON: () => {
        name: string;
        path: string;
    };
    $$type: string;
    __instance: _palmares_core.Domain<any>;
} & (new () => {
    load: (_: ServersSettingsType) => Promise<undefined>;
    ready: (args: _palmares_core.DomainReadyFunctionArgs<unknown, any>) => void | Promise<void>;
    close: (() => void | Promise<void>) | undefined;
    commands: {
        readonly runserver: {
            readonly description: "Start the server in development mode";
            readonly keywordArgs: {
                readonly port: {
                    readonly description: "The port to run the server on";
                    readonly type: "number";
                    readonly default: 4000;
                    readonly hasFlag: true;
                };
            };
            readonly positionalArgs: undefined;
            readonly handler: () => {
                new (domains: _palmares_core.Domain[], settings: _palmares_core.SettingsType2): {
                    start: (configureCleanup: (args?: any) => Promise<void> | void) => Promise<void>;
                    load: (args: {
                        settings: AllServerSettingsType;
                        commandLineArgs: {
                            keywordArgs: {
                                port?: number;
                            };
                            positionalArgs: object;
                        };
                        domains: ServerDomain[];
                    }) => Promise<void>;
                    close: () => Promise<void>;
                    baseAppServer: _palmares_core_dist_src_index_CkvPmDl3.B;
                };
                $$type: string;
            };
        };
        readonly serverless: {
            readonly description: "Generate the serverless configuration from the server";
            readonly keywordArgs: undefined;
            readonly positionalArgs: undefined;
            readonly handler: ({ domains, settings }: _palmares_core.DomainHandlerFunctionArgs) => Promise<void>;
        };
    } | undefined;
    instances?: _palmares_core.Domain<any>[];
    name: string;
    path: string;
    isLoaded: boolean;
    modifiers: unknown;
    __isReady: boolean;
    __isClosed: boolean;
} & {
    commands: {
        readonly runserver: {
            readonly description: "Start the server in development mode";
            readonly keywordArgs: {
                readonly port: {
                    readonly description: "The port to run the server on";
                    readonly type: "number";
                    readonly default: 4000;
                    readonly hasFlag: true;
                };
            };
            readonly positionalArgs: undefined;
            readonly handler: () => {
                new (domains: _palmares_core.Domain[], settings: _palmares_core.SettingsType2): {
                    start: (configureCleanup: (args?: any) => Promise<void> | void) => Promise<void>;
                    load: (args: {
                        settings: AllServerSettingsType;
                        commandLineArgs: {
                            keywordArgs: {
                                port?: number;
                            };
                            positionalArgs: object;
                        };
                        domains: ServerDomain[];
                    }) => Promise<void>;
                    close: () => Promise<void>;
                    baseAppServer: _palmares_core_dist_src_index_CkvPmDl3.B;
                };
                $$type: string;
            };
        };
        readonly serverless: {
            readonly description: "Generate the serverless configuration from the server";
            readonly keywordArgs: undefined;
            readonly positionalArgs: undefined;
            readonly handler: ({ domains, settings }: _palmares_core.DomainHandlerFunctionArgs) => Promise<void>;
        };
    };
    load: (_: ServersSettingsType) => Promise<undefined>;
});

export { type ServerDomain as S, serverDomainModifier as a, serverDomain as s };
