import { OCResourceEnum } from "../models/oc-resource-enum";
import { ForeignKey, OCResource } from "../models/oc-resources";
import { SerializedMarketplace } from "../models/serialized-marketplace";
import { OpenAPIProperty } from "../models/open-api";
import { IDCache } from "../models/id-cache";
import { LogCallBackFunc } from "../services/logger";
export interface ValidateResponse {
    errors: string[];
    isValid: boolean;
    rawData: SerializedMarketplace;
}
export interface ValidateArgs {
    rawData?: SerializedMarketplace;
    dataUrl?: string;
    logger?: LogCallBackFunc;
}
export declare function validate(args: ValidateArgs): Promise<ValidateResponse>;
export declare class Validator {
    errors: string[];
    idCache: IDCache;
    usernameCache: Set<string>;
    currentResource: OCResource;
    currentRecord: any;
    currentPropertyName: string;
    addError(message: string): void;
    validateIsRequired(fieldName: string): boolean;
    validateParentRef(parentType: OCResourceEnum): boolean;
    validateForeignKeyExists(foreignKey: ForeignKey): boolean;
    validateFieldTypeMatches(value: any, spec: OpenAPIProperty): boolean;
    validateDuplicateIDs(): boolean;
    validateDuplicateUsernames(): boolean;
}
