import { Feature, BucketKey, BucketValue, Context } from "@featurevisor/types";
import { Logger } from "./logger";
export declare const MAX_BUCKETED_NUMBER = 100000;
export declare function getBucketedNumber(bucketKey: string): number;
/**
 * Feature specific bucketing
 */
export type ConfigureBucketKey = (feature: Feature, context: Context, bucketKey: BucketKey) => BucketKey;
export interface BucketKeyOptions {
    feature: Feature;
    context: Context;
    logger: Logger;
    bucketKeySeparator?: string;
    configureBucketKey?: ConfigureBucketKey;
}
export declare function getBucketKey(options: BucketKeyOptions): BucketKey;
export interface Bucket {
    bucketKey: BucketKey;
    bucketValue: BucketValue;
}
export type ConfigureBucketValue = (feature: Feature, context: Context, bucketValue: BucketValue) => BucketValue;
export interface BucketValueOptions {
    feature: Feature;
    context: Context;
    logger: Logger;
    bucketKeySeparator?: string;
    configureBucketKey?: ConfigureBucketKey;
    configureBucketValue?: ConfigureBucketValue;
}
export declare function getBucket(options: BucketValueOptions): Bucket;
