import { Boom, CreateMonitorPayload, UpdateMonitorPayload } from '@meshwatch/types';
import { Dictionary } from 'lodash';
import * as Yup from 'yup';
import { CompleteGettingStartedTaskPayload } from '../models';
interface ValidationSuccess {
    error: false;
}
interface ValidationError<T extends Dictionary<any>> {
    error: true;
    errors: FormErrors<T>;
}
export declare type ValidationResponse<T extends Dictionary<any>> = ValidationSuccess | ValidationError<T>;
declare type OptionalNonFieldErrors = {
    non_field_errors?: string;
};
export declare type FormErrors<T> = Partial<T & OptionalNonFieldErrors>;
export declare type TypedBoom<T> = Boom<FormErrors<T>>;
export declare function validateCompleteGettingStartedTaskPayload(payload: CompleteGettingStartedTaskPayload): Promise<ValidationResponse<CompleteGettingStartedTaskPayload>>;
export declare function validateCreateMonitorPayload(payload: CreateMonitorPayload): Promise<ValidationResponse<CreateMonitorPayload>>;
export declare function validateUpdateMonitorPayload(payload: UpdateMonitorPayload): Promise<ValidationResponse<UpdateMonitorPayload>>;
export declare function validate<T extends Dictionary<any>>(schema: Yup.ObjectSchema<Yup.Shape<object, T>>, payload: T, options?: Yup.ValidateOptions): Promise<ValidationResponse<T>>;
export {};
