import * as zod from 'zod';
declare const ConfigModel: zod.ZodObject<{
    registry: zod.ZodOptional<zod.ZodObject<{
        endpoint: zod.ZodOptional<zod.ZodString>;
        accessToken: zod.ZodOptional<zod.ZodString>;
    }, "strip", zod.ZodTypeAny, {
        endpoint?: string | undefined;
        accessToken?: string | undefined;
    }, {
        endpoint?: string | undefined;
        accessToken?: string | undefined;
    }>>;
    cdn: zod.ZodOptional<zod.ZodObject<{
        endpoint: zod.ZodOptional<zod.ZodString>;
        accessToken: zod.ZodOptional<zod.ZodString>;
    }, "strip", zod.ZodTypeAny, {
        endpoint?: string | undefined;
        accessToken?: string | undefined;
    }, {
        endpoint?: string | undefined;
        accessToken?: string | undefined;
    }>>;
}, "strip", zod.ZodTypeAny, {
    registry?: {
        endpoint?: string | undefined;
        accessToken?: string | undefined;
    } | undefined;
    cdn?: {
        endpoint?: string | undefined;
        accessToken?: string | undefined;
    } | undefined;
}, {
    registry?: {
        endpoint?: string | undefined;
        accessToken?: string | undefined;
    } | undefined;
    cdn?: {
        endpoint?: string | undefined;
        accessToken?: string | undefined;
    } | undefined;
}>;
export type ConfigModelType = zod.TypeOf<typeof ConfigModel>;
type BuildPropertyPath<TObject extends zod.ZodObject<any>> = `.${GetConfigurationKeys<TObject>}`;
type GetConfigurationKeys<T extends zod.ZodObject<{
    [key: string]: zod.ZodType<any, any>;
}>> = T extends zod.ZodObject<infer TObjectShape> ? TObjectShape extends Record<infer TKey, infer TObjectPropertyType> ? TKey extends string ? `${TKey}${TObjectPropertyType extends zod.ZodObject<any> ? BuildPropertyPath<TObjectPropertyType> : TObjectPropertyType extends zod.ZodOptional<infer TOptionalInnerObjectPropertyType> ? TOptionalInnerObjectPropertyType extends zod.ZodObject<any> ? BuildPropertyPath<TOptionalInnerObjectPropertyType> : '' : ''}` : never : never : never;
type GetZodValueType<TString extends string, ConfigurationModelType extends zod.ZodObject<any>> = TString extends `${infer TKey}.${infer TNextKey}` ? ConfigurationModelType extends zod.ZodObject<infer InnerType> ? InnerType[TKey] extends zod.ZodObject<any> ? GetZodValueType<TNextKey, InnerType[TKey]> : InnerType[TKey] extends zod.ZodOptional<infer OptionalInner> ? OptionalInner extends zod.ZodObject<any> ? GetZodValueType<TNextKey, OptionalInner> : never : never : never : ConfigurationModelType extends zod.ZodObject<infer InnerType> ? zod.TypeOf<InnerType[TString]> : never;
export type GetConfigurationValueType<TString extends string> = GetZodValueType<TString, typeof ConfigModel>;
export type ValidConfigurationKeys = GetConfigurationKeys<typeof ConfigModel>;
export declare const graphqlEndpoint = "https://app.graphql-hive.com/graphql";
export declare const allowedKeys: ("registry.endpoint" | "registry.accessToken" | "cdn.endpoint" | "cdn.accessToken")[];
export declare class Config {
    private cache?;
    private filepath;
    constructor({ filepath, rootDir }: {
        filepath?: string;
        rootDir: string;
    });
    get<TKey extends ValidConfigurationKeys>(key: TKey): GetZodValueType<TKey, typeof ConfigModel> | null;
    set(key: ValidConfigurationKeys, value: string): void;
    delete(key: string): void;
    clear(): void;
    private readSpace;
    private read;
    private write;
}
export {};
//# sourceMappingURL=config.d.ts.map