import { CLIDetails, ConfigSectionReader, CredentialGetter, getEnvironmentConfig, Logger } from '../index';
export declare type FeatureGate = 'forge-cli-test-gate' | 'is-logs-v-2-api-enabled' | 'forge-cli-bundle-runtime-loader' | 'forge-cli-enable-teamwork-graph-product-support' | 'forge-cli-enable-developer-space-flow' | 'forge-cli-enable-developer-space-enforcement-flow' | 'forge-cli-enable-typescript-bundler' | 'forge-cli-enable-self-managed-tunnel';
export declare type DynamicConfig = {
    'forge-cli-test-dynamic-configs': string[];
    'xls-forge-cli-deprecated-runtimes': string[];
    'forge-cli-enable-custom-spinner': string[];
};
export declare type DynamicConfigKey = keyof DynamicConfig;
export declare abstract class StatsigReader {
    abstract checkGate<F extends FeatureGate>(flag: F, customAttributes?: Record<string, string>): Promise<boolean | null>;
    abstract getDynamicConfig<F extends DynamicConfigKey>(flag: F, metadata?: Record<string, string>): Promise<DynamicConfig[F] | null>;
    testForgeCliTestGate(): Promise<boolean>;
    getForgeCliTestDynamicConfig(): Promise<string[]>;
    isLogsV2ApiEnabled(): Promise<boolean>;
    isTeamworkGraphProductSupported(): Promise<boolean>;
    testForgeCliBundleRuntimeLoaderGate(): Promise<boolean>;
    getDeprecatedRuntimes(): Promise<string[]>;
    isDevSpaceSelectionEnabled(): Promise<boolean>;
    isDeveloperSpaceEnforcementFlowEnabled(): Promise<boolean>;
    isTypescriptBundlerEnabled(): Promise<boolean>;
    isSelfManagedTunnelEnabled(): Promise<boolean>;
    getCustomSpinnerConfig(): Promise<string[] | null>;
}
export declare function cacheStatsigResult<C, T>(getter: (this: C, ...args: any[]) => Promise<T>): (this: C, ...args: any[]) => Promise<T>;
export declare class StatsigService extends StatsigReader {
    private readonly logger;
    private readonly cliDetails;
    private readonly credentialStore;
    private readonly appConfigReader;
    private readonly getEnvironmentFn;
    constructor(logger: Logger, cliDetails: Pick<CLIDetails, 'version'> | undefined, credentialStore: CredentialGetter, appConfigReader: ConfigSectionReader<{
        id: string;
    }>, getEnvironmentFn?: typeof getEnvironmentConfig);
    private appID;
    private context;
    private fetchGates;
    private fetchDynamicConfigs;
    private gatesClient;
    private dynamicConfigClient;
    checkGate<F extends FeatureGate>(gate: F, customAttributes?: Record<string, string>): Promise<boolean | null>;
    getDynamicConfig<F extends DynamicConfigKey>(dynamicConfig: F, metadata?: Record<string, string>): Promise<DynamicConfig[F] | null>;
}
//# sourceMappingURL=statsig-service.d.ts.map