/**
 * @file Base compatibility data schema, which is commonly used in compatibility tables.
 */
import zod from 'zod';
/**
 * Zod schema for boolean values. Accepts both boolean and string values.
 */
export declare const booleanSchema: zod.ZodUnion<[zod.ZodEffects<zod.ZodString, boolean, string>, zod.ZodBoolean]>;
/**
 * Zod schema for non-empty string values.
 */
export declare const nonEmptyStringSchema: zod.ZodPipeline<zod.ZodEffects<zod.ZodString, string, string>, zod.ZodString>;
/**
 * Zod schema for base compatibility data.
 * Here we use snake_case properties because the compatibility data is stored in YAML files.
 */
export declare const baseCompatibilityDataSchema: zod.ZodObject<{
    /**
     * Name of the actual entity.
     */
    name: zod.ZodPipeline<zod.ZodEffects<zod.ZodString, string, string>, zod.ZodString>;
    /**
     * List of aliases for the entity (if any).
     */
    aliases: zod.ZodDefault<zod.ZodNullable<zod.ZodArray<zod.ZodPipeline<zod.ZodEffects<zod.ZodString, string, string>, zod.ZodString>, "many">>>;
    /**
     * Short description of the actual entity.
     * If not specified or it's value is `null`, then the description is not available.
     */
    description: zod.ZodDefault<zod.ZodNullable<zod.ZodPipeline<zod.ZodEffects<zod.ZodString, string, string>, zod.ZodString>>>;
    /**
     * Link to the documentation. If not specified or it's value is `null`, then the documentation is not available.
     */
    docs: zod.ZodDefault<zod.ZodNullable<zod.ZodPipeline<zod.ZodEffects<zod.ZodString, string, string>, zod.ZodString>>>;
    /**
     * The version of the adblocker in which the entity was added.
     * For AdGuard resources, the version of the library is specified.
     */
    version_added: zod.ZodDefault<zod.ZodNullable<zod.ZodPipeline<zod.ZodEffects<zod.ZodString, string, string>, zod.ZodString>>>;
    /**
     * The version of the adblocker when the entity was removed.
     */
    version_removed: zod.ZodDefault<zod.ZodNullable<zod.ZodPipeline<zod.ZodEffects<zod.ZodString, string, string>, zod.ZodString>>>;
    /**
     * Describes whether the entity is deprecated.
     */
    deprecated: zod.ZodDefault<zod.ZodUnion<[zod.ZodEffects<zod.ZodString, boolean, string>, zod.ZodBoolean]>>;
    /**
     * Message that describes why the entity is deprecated.
     * If not specified or it's value is `null`, then the message is not available.
     * It's value is omitted if the entity is not marked as deprecated.
     */
    deprecation_message: zod.ZodDefault<zod.ZodNullable<zod.ZodPipeline<zod.ZodEffects<zod.ZodString, string, string>, zod.ZodString>>>;
    /**
     * Describes whether the entity is removed; for *already removed* features.
     */
    removed: zod.ZodDefault<zod.ZodUnion<[zod.ZodEffects<zod.ZodString, boolean, string>, zod.ZodBoolean]>>;
    /**
     * Message that describes why the entity is removed.
     * If not specified or it's value is `null`, then the message is not available.
     * It's value is omitted if the entity is not marked as deprecated.
     */
    removal_message: zod.ZodDefault<zod.ZodNullable<zod.ZodPipeline<zod.ZodEffects<zod.ZodString, string, string>, zod.ZodString>>>;
}, "strip", zod.ZodTypeAny, {
    name: string;
    description: string | null;
    aliases: string[] | null;
    docs: string | null;
    version_added: string | null;
    version_removed: string | null;
    deprecated: boolean;
    deprecation_message: string | null;
    removed: boolean;
    removal_message: string | null;
}, {
    name: string;
    description?: string | null | undefined;
    aliases?: string[] | null | undefined;
    docs?: string | null | undefined;
    version_added?: string | null | undefined;
    version_removed?: string | null | undefined;
    deprecated?: string | boolean | undefined;
    deprecation_message?: string | null | undefined;
    removed?: string | boolean | undefined;
    removal_message?: string | null | undefined;
}>;
/**
 * Zod schema for base compatibility data with camelCase properties.
 */
export declare const baseCompatibilityDataSchemaCamelCase: zod.ZodEffects<zod.ZodTypeAny, {
    name: string;
    description: string | null;
    aliases: string[] | null;
    docs: string | null;
    versionAdded: string | null;
    versionRemoved: string | null;
    deprecated: boolean;
    deprecationMessage: string | null;
    removed: boolean;
    removalMessage: string | null;
}, any>;
/**
 * Type of the base compatibility data schema.
 */
export type BaseCompatibilityDataSchema = zod.infer<typeof baseCompatibilityDataSchemaCamelCase>;
/**
 * Refinement logic for base compatibility data.
 *
 * @param data Base compatibility data.
 * @param ctx Refinement context.
 */
export declare const baseRefineLogic: (data: zod.infer<typeof baseCompatibilityDataSchema>, ctx: zod.RefinementCtx) => void;
/**
 * Creates a base file schema.
 *
 * @param dataSchema Data schema.
 *
 * @returns Base file schema.
 */
export declare const baseFileSchema: <T extends BaseCompatibilityDataSchema>(dataSchema: zod.ZodType<T>) => zod.ZodPipeline<zod.ZodEffects<zod.ZodRecord<zod.ZodAny, zod.ZodAny>, Record<any, any>, Record<any, any>>, zod.ZodRecord<zod.ZodEffects<zod.ZodString, number, string>, zod.ZodType<T, zod.ZodTypeDef, T>>>;
/**
 * Type of the base file schema.
 */
export type BaseFileSchema<T extends BaseCompatibilityDataSchema> = zod.infer<ReturnType<typeof baseFileSchema<T>>>;
