/// <reference types="node" />
import { Redis } from "ioredis";
import { Logger } from "../shared/logger";
export interface QuirrelServerConfig {
    redisFactory: () => Redis;
    port?: number;
    host?: string;
    passphrases?: string[];
    jwtPublicKey?: string;
    runningInDocker?: boolean;
    disableTelemetry?: boolean;
    logger?: Logger;
    postHogApiKey?: string;
    rateLimiter?: {
        max?: number;
    };
}
declare module "fastify" {
    interface FastifyInstance {
        adminBasedAuthEnabled: boolean;
    }
}
export declare function createServer({ port, host, runningInDocker, redisFactory, passphrases, disableTelemetry, logger, jwtPublicKey, rateLimiter, postHogApiKey, }: QuirrelServerConfig): Promise<{
    server: import("http").Server;
    app: import("fastify").FastifyInstance<import("http").Server, import("http").IncomingMessage, import("http").ServerResponse, import("pino").Logger<{
        level: string;
    }>, import("fastify").FastifyTypeProviderDefault> & PromiseLike<import("fastify").FastifyInstance<import("http").Server, import("http").IncomingMessage, import("http").ServerResponse, import("pino").Logger<{
        level: string;
    }>, import("fastify").FastifyTypeProviderDefault>>;
    port: number;
    close(): Promise<void>;
}>;
