import type { Attributes, Properties, SplitIO, SplitKey, Treatment, TreatmentWithConfig } from '@splitsoftware/splitio/types/splitio';
import type { FastifyPluginAsync } from 'fastify';
declare module 'fastify' {
    interface FastifyInstance {
        splitIOFeatureManager: SplitIOFeatureManager;
    }
}
export interface SplitIOOptions {
    isEnabled: boolean;
    apiKey: string;
    debugMode: boolean;
    localhostFilePath?: string;
}
export declare class SplitIOFeatureManager {
    private readonly isEnabled;
    private readonly splitIOClient?;
    constructor(isSplitIOEnabled: boolean, apiKey: string, debugMode: boolean, localhostFilePath?: string);
    init(): Promise<void>;
    getTreatment(key: SplitKey, splitName: string, attributes?: Attributes): Treatment;
    getTreatmentWithConfig(key: SplitKey, splitName: string, attributes?: Attributes): TreatmentWithConfig;
    track(key: SplitIO.SplitKey, trafficType: string, eventType: string, value?: number, properties?: Properties): boolean;
    shutdown(): Promise<void>;
}
export declare const splitIOFeatureManagerPlugin: FastifyPluginAsync<SplitIOOptions>;
