import { s } from "bknd/utils";
import { Module } from "../../modules/Module";
export declare const serverConfigSchema: s.ObjectSchema<{
    readonly cors: s.ObjectSchema<{
        readonly origin: s.StringSchema<{
            readonly default: "*";
        }> & {
            readonly default: "*";
        };
        readonly allow_methods: s.ArraySchema<s.StringSchema<{
            readonly enum: readonly ["GET", "POST", "PATCH", "PUT", "DELETE"];
        }> & {
            readonly enum: readonly ["GET", "POST", "PATCH", "PUT", "DELETE"];
        }, {
            readonly default: readonly ["GET", "POST", "PATCH", "PUT", "DELETE"];
            readonly uniqueItems: true;
        }> & {
            readonly default: readonly ["GET", "POST", "PATCH", "PUT", "DELETE"];
            readonly uniqueItems: true;
        };
        readonly allow_headers: s.ArraySchema<s.StringSchema<s.IStringOptions> & s.IStringOptions, {
            readonly default: readonly ["Content-Type", "Content-Length", "Authorization", "Accept"];
        }> & {
            readonly default: readonly ["Content-Type", "Content-Length", "Authorization", "Accept"];
        };
        readonly allow_credentials: s.Schema<{
            readonly default: true;
        }, boolean, boolean> & {
            readonly default: true;
        };
    }, s.Merge<s.IObjectOptions & {
        additionalProperties: false;
    }>>;
}, s.Merge<s.IObjectOptions & {
    additionalProperties: false;
}>>;
export type AppServerConfig = s.Static<typeof serverConfigSchema>;
export declare class AppServer extends Module<AppServerConfig> {
    getRestrictedPaths(): never[];
    get client(): import("hono").Hono<import("../..").ServerEnv, import("hono/types").BlankSchema, "/">;
    getSchema(): s.ObjectSchema<{
        readonly cors: s.ObjectSchema<{
            readonly origin: s.StringSchema<{
                readonly default: "*";
            }> & {
                readonly default: "*";
            };
            readonly allow_methods: s.ArraySchema<s.StringSchema<{
                readonly enum: readonly ["GET", "POST", "PATCH", "PUT", "DELETE"];
            }> & {
                readonly enum: readonly ["GET", "POST", "PATCH", "PUT", "DELETE"];
            }, {
                readonly default: readonly ["GET", "POST", "PATCH", "PUT", "DELETE"];
                readonly uniqueItems: true;
            }> & {
                readonly default: readonly ["GET", "POST", "PATCH", "PUT", "DELETE"];
                readonly uniqueItems: true;
            };
            readonly allow_headers: s.ArraySchema<s.StringSchema<s.IStringOptions> & s.IStringOptions, {
                readonly default: readonly ["Content-Type", "Content-Length", "Authorization", "Accept"];
            }> & {
                readonly default: readonly ["Content-Type", "Content-Length", "Authorization", "Accept"];
            };
            readonly allow_credentials: s.Schema<{
                readonly default: true;
            }, boolean, boolean> & {
                readonly default: true;
            };
        }, s.Merge<s.IObjectOptions & {
            additionalProperties: false;
        }>>;
    }, s.Merge<s.IObjectOptions & {
        additionalProperties: false;
    }>>;
    build(): Promise<void>;
    toJSON(secrets?: boolean): {
        cors: {
            origin: string;
            allow_methods: ("GET" | "POST" | "PATCH" | "PUT" | "DELETE")[];
            allow_headers: string[];
            allow_credentials: boolean;
        };
    };
}
