import { FieldNullability, FieldRequiredness, InputFieldMap, InputShapeFromFields, InputShapeFromTypeParam, InputType, SchemaTypes, TypeParam } from '@giraphql/core';
import { RefineConstraint, ValidationOptions } from './types';
import { GiraphQLValidationPlugin } from '.';
declare global {
    export namespace GiraphQLSchemaTypes {
        interface Plugins<Types extends SchemaTypes> {
            validation: GiraphQLValidationPlugin<Types>;
        }
        interface FieldOptions<Types extends SchemaTypes, ParentShape, Type extends TypeParam<Types>, Nullable extends FieldNullability<Type>, Args extends InputFieldMap, ResolveShape, ResolveReturnShape> {
            validate?: RefineConstraint<InputShapeFromFields<Args>>;
        }
        interface InputObjectTypeOptions<Types extends SchemaTypes = SchemaTypes, Fields extends InputFieldMap = InputFieldMap> {
            validate?: RefineConstraint<InputShapeFromFields<Fields>>;
        }
        interface InputFieldOptions<Types extends SchemaTypes = SchemaTypes, Type extends InputType<Types> | [InputType<Types>] = InputType<Types> | [InputType<Types>], Req extends FieldRequiredness<Type> = FieldRequiredness<Type>> {
            validate?: ValidationOptions<InputShapeFromTypeParam<Types, Type, true>>;
        }
    }
}
//# sourceMappingURL=global-types.d.ts.map