import { ValidationContext, FileValue } from 'sanity';

declare const referencedDocumentRequires: (documentType: string, field: string, message?: string) => (value: any | undefined, context: ValidationContext) => Promise<string | true>;

declare const fileExtension: (validFileExtension: string | Array<string>, message?: string) => (value: FileValue | undefined) => string | true;

declare const minCount: (n: number, message?: string) => (value: Array<unknown> | undefined) => string | true;

declare const maxCount: (n: number, message?: string) => (value: Array<unknown> | undefined) => string | true;

declare const minDimensions: ({ x, y }: {
    x: number;
    y: number;
}, message?: string) => (value: FileValue | undefined) => string | true;

declare const maxDimensions: ({ x, y }: {
    x: number;
    y: number;
}, message?: string) => (value: FileValue | undefined) => string | true;

declare const maxDepth: (maxDepth: number, key: string, message?: string) => (_: any, context: ValidationContext) => string | true;

declare const requiredIfSlugEq: (operand: Array<string> | string, slugKey?: string, message?: string) => (value: unknown | undefined, context: ValidationContext) => string | true;

declare const requiredIfSlugNeq: (operand: Array<string> | string, slugKey?: string, message?: string) => (value: unknown | undefined, context: ValidationContext) => string | true;

declare const requiredIfSiblingEq: (key: string, operand: string | number | null | Array<string | number | null>, message?: string) => (value: unknown | undefined, context: ValidationContext) => string | true;

declare const requiredIfSiblingNeq: (key: string, operand: string | number | null | Array<string | number | null>, message?: string) => (value: unknown | undefined, context: ValidationContext) => string | true;

declare const getSibling: (key: string | number, context: ValidationContext) => any;

declare const regex: (pattern: RegExp, message?: string) => (value: unknown) => string | true;

export { fileExtension, getSibling, maxCount, maxDepth, maxDimensions, minCount, minDimensions, referencedDocumentRequires, regex, requiredIfSiblingEq, requiredIfSiblingNeq, requiredIfSlugEq, requiredIfSlugNeq };
