import { ApitallyConfig, ApitallyConsumer } from '../common/types.js';
import { Elysia } from 'elysia';
import { ApitallyClient } from '../common/client.js';
import { CapturedResponse } from '../common/response.js';
import { SpanHandle } from '../common/spanCollector.js';
import '../common/logging.js';
import 'winston';
import '../common/requestLogger.js';
import 'node:buffer';
import 'node:http';
import '../common/tempGzipFile.js';
import '@opentelemetry/sdk-trace-base';
import '../common/consumerRegistry.js';
import '../common/requestCounter.js';
import '../common/serverErrorCounter.js';
import '../common/validationErrorCounter.js';

declare const START_TIME_SYMBOL: unique symbol;
declare const REQUEST_BODY_SYMBOL: unique symbol;
declare const RESPONSE_SYMBOL: unique symbol;
declare const RESPONSE_PROMISE_SYMBOL: unique symbol;
declare const ERROR_SYMBOL: unique symbol;
declare const CLIENT_SYMBOL: unique symbol;
declare const SPAN_HANDLE_SYMBOL: unique symbol;
declare global {
    interface Request {
        [START_TIME_SYMBOL]?: number;
        [REQUEST_BODY_SYMBOL]?: Buffer;
        [RESPONSE_SYMBOL]?: Response;
        [RESPONSE_PROMISE_SYMBOL]?: Promise<CapturedResponse>;
        [ERROR_SYMBOL]?: Readonly<Error>;
        [CLIENT_SYMBOL]?: ApitallyClient;
        [SPAN_HANDLE_SYMBOL]?: SpanHandle;
    }
}
interface ApitallyContext {
    consumer?: ApitallyConsumer | string;
}
declare function apitallyPlugin(config: ApitallyConfig): (app: Elysia) => Elysia<"", {
    decorator: {
        apitally: ApitallyContext;
    };
    store: {};
    derive: {};
    resolve: {};
}, {
    typebox: {};
    error: {};
}, {
    schema: {};
    standaloneSchema: {};
    macro: {};
    macroFn: {};
    parser: {};
    response: {};
}, {}, {
    derive: {};
    resolve: {};
    schema: {};
    standaloneSchema: {};
    response: {};
}, {
    derive: {};
    resolve: {};
    schema: {};
    standaloneSchema: {};
    response: {};
}>;

export { apitallyPlugin as default };
