import type { Plugin } from "../plugins/Plugin";
import { type Derivative } from "./parse";
import { type GraphQLScalarValueParser } from "graphql";
export declare namespace createScalar {
    interface Types {
        string: string;
        number: number;
        boolean: boolean;
        object: Record<string, Derivative>;
        array: Array<Derivative>;
    }
    type Invalid = (reason?: string) => string;
    type Casts = {
        [Key in keyof Types]?: boolean | ((value: Types[Key], invalid: Invalid) => string);
    };
    type Serializer = (value: unknown) => unknown;
}
export declare function createScalar(name: string, description: string, casts: createScalar.Casts, serialize?: createScalar.Serializer | undefined): Plugin<any>;
export declare function createScalarCast(name: string, casts: createScalar.Casts): GraphQLScalarValueParser<unknown>;
