import type { GraphQLScalarType } from "graphql";
export declare namespace Scalar {
    interface Options<TSerialized, TParsed> {
        /**
         * A function that transforms the JSON serialized value into its parsed value.
         *
         * @example
         *
         * ```ts
         * new Scalar<string, Date>({
         *   parse: (dateString) => new Date(dateString),
         * });
         * ```
         */
        parse(serializedValue: TSerialized): NoInfer<TParsed>;
        /**
         * A function that transforms the parsed value into its JSON serialized value.
         *
         * @example
         *
         * ```ts
         * new Scalar<string, Date>({
         *   serialize: (date) => date.toISOString(),
         * });
         * ```
         */
        serialize(parsedValue: TParsed): NoInfer<TSerialized>;
        /**
         * A [predicate function](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates) that determines whether the value
         * is the parsed value. Return `true` when the value is the parsed value.
         *
         * @defaultValue
         * Function that returns `true` when the value is a non-null object type.
         *
         * @example
         *
         * ```ts
         * new Scalar<string, Date>({
         *   is: (value) => value instanceof Date,
         * });
         * ```
         */
        is?(value: TSerialized | TParsed): boolean;
    }
}
export declare class Scalar<TSerialized, TParsed> {
    private options;
    static fromGraphQLScalarType<TSerialized, TParsed>(scalarType: GraphQLScalarType<TParsed, TSerialized>, options?: Pick<Scalar.Options<NoInfer<TSerialized>, NoInfer<TParsed>>, "is">): Scalar<TSerialized, TParsed>;
    constructor(options: Scalar.Options<TSerialized, TParsed>);
    parse(value: TSerialized): TParsed;
    serialize(value: TParsed): TSerialized;
    coerceToParsed(value: TSerialized | TParsed): TParsed;
    coerceToSerialized(value: TSerialized | TParsed): TSerialized;
    is(value: TSerialized | TParsed): value is TParsed;
}
//# sourceMappingURL=Scalar.d.cts.map
