import type { BaseEvent, NodeOptions, Plugin } from '@amplitude/analytics-types';
import type { FastifyPluginCallback, FastifyReply, FastifyRequest } from 'fastify';
import { Amplitude } from './Amplitude.js';
declare module 'fastify' {
    interface FastifyInstance {
        amplitude: Amplitude;
    }
}
/**
 * Callback used to create the events that will be used to automatically
 * track the API usage
 */
export type CreateApiTrackingEventFn = (req: FastifyRequest, res: FastifyReply) => BaseEvent | null;
/**
 * Configuration to set up the Amplitude Plugin.
 *
 * @property {boolean} isEnabled Flag to enable or disable the plugin.
 *
 * @property {string} apiKey Amplitude api key, please get it from your
 * Amplitude project
 *
 * @property {NodeOptions} Amplitude configuration, please check
 * [this](https://amplitude.github.io/Amplitude-TypeScript/modules/_amplitude_analytics_node.Types.html#NodeOptions)
 * to learn more.
 *
 * @property {CreateApiTrackingEventFn} apiUsageTracking Callback used to create
 * the event that will be sent automatically to track the API usage. If not
 * specified the API usage track will be disabled.
 *
 * @property {Plugin[]} plugins Allow to extend plugin behavior by, for example,
 * modifying event properties. Please check
 * [this](https://www.docs.developers.amplitude.com/data/sdks/typescript-node/#plugins)
 * to see how it works
 */
export interface AmplitudeConfig {
    isEnabled: boolean;
    apiKey?: string;
    options?: NodeOptions;
    apiUsageTracking?: CreateApiTrackingEventFn;
    plugins?: Plugin[];
}
/**
 * Use this method to register the amplitude plugin on your fastify instance.
 *
 * Example of usage:
 * ```ts
 * await app.register(amplitudePlugin, {
 *     isEnabled: true,
 *     apiKey: 'dummy-api-key',
 *     options: {
 *       serverZone: 'EU',
 *     },
 * })
 * ```
 */
export declare const amplitudePlugin: FastifyPluginCallback<AmplitudeConfig>;
