import { Provider, ResolutionDetails, EvaluationContext, JsonValue, ProviderMetadata, ProviderStatus, TrackingEventDetails } from '@openfeature/server-sdk';
import { DevCycleClient, DevCycleCloudClient, DevCycleOptions, DevCycleOptionsLocalEnabled, DevCycleOptionsCloudEnabled } from '../index';
export declare class DevCycleProvider implements Provider {
    readonly metadata: ProviderMetadata;
    readonly runsOn = "server";
    private readonly logger;
    readonly devcycleClient: DevCycleClient | DevCycleCloudClient;
    /**
     * Create a DevCycleProvider from an existing DevCycle client
     */
    constructor(devcycleClient: DevCycleClient | DevCycleCloudClient, options?: Pick<DevCycleOptions, 'logger' | 'logLevel'>);
    /**
     * Create a DevCycleProvider with a local bucketing client
     */
    constructor(sdkKey: string, options?: DevCycleOptionsLocalEnabled);
    /**
     * Create a DevCycleProvider with a cloud bucketing client
     */
    constructor(sdkKey: string, options: DevCycleOptionsCloudEnabled);
    get status(): ProviderStatus;
    initialize(context?: EvaluationContext): Promise<void>;
    onClose(): Promise<void>;
    track(trackingEventName: string, context?: EvaluationContext, trackingEventDetails?: TrackingEventDetails): void;
    /**
     * Generic function to retrieve a DVC variable and convert it to a ResolutionDetails.
     * @param flagKey
     * @param defaultValue
     * @param context
     * @private
     */
    private getDVCVariable;
    /**
     * Resolve a boolean OpenFeature flag and its evaluation details.
     * @param flagKey
     * @param defaultValue
     * @param context
     */
    resolveBooleanEvaluation(flagKey: string, defaultValue: boolean, context: EvaluationContext): Promise<ResolutionDetails<boolean>>;
    /**
     * Resolve a string OpenFeature flag and its evaluation details.
     * @param flagKey
     * @param defaultValue
     * @param context
     */
    resolveStringEvaluation(flagKey: string, defaultValue: string, context: EvaluationContext): Promise<ResolutionDetails<string>>;
    /**
     * Resolve a number OpenFeature flag and its evaluation details.
     * @param flagKey
     * @param defaultValue
     * @param context
     */
    resolveNumberEvaluation(flagKey: string, defaultValue: number, context: EvaluationContext): Promise<ResolutionDetails<number>>;
    /**
     * Resolve a object OpenFeature flag and its evaluation details.
     * @param flagKey
     * @param defaultValue
     * @param context
     */
    resolveObjectEvaluation<T extends JsonValue>(flagKey: string, defaultValue: T, context: EvaluationContext): Promise<ResolutionDetails<T>>;
    /**
     * Convert a OpenFeature JsonValue default value into DVCJSON default value for evaluation.
     * @param jsonValue
     * @private
     */
    private defaultValueFromJsonValue;
    /**
     * Convert a DVCVariable result into a OpenFeature ResolutionDetails.
     * TODO: add support for variant / reason / and more error codes from DVC.
     * @param variable
     * @private
     */
    private resultFromDVCVariable;
    /**
     * Convert an OpenFeature EvaluationContext into a DevCycleUser.
     * @param context
     * @private
     */
    private devcycleUserFromContext;
    /**
     * Convert customData from an OpenFeature EvaluationContextObject into a DevCycleUser customData.
     * @param evaluationData
     * @private
     */
    private convertToDVCCustomDataJSON;
}
