export interface PropertyData<T> {
    /**
     * The default value for the property to be used if no value is provided.
     */
    readonly defaultValue?: T | null;
    /**
     * Defines if the property is optional. If true, the property can be omitted.
     * By default, properties are required.
     * If a property is optional, the property will be set to the defaultValue.
     * @deprecated Since options cannot reflect the data type, this option is deprecated.
     * Use <code>.optional()</code> instead. Example: <code>field.string().optional()</code>
     */
    readonly isOptional?: boolean;
    /**
     * Defines if the property can be null.
     * @deprecated Since options cannot reflect the data type, this option is deprecated.
     * Use <code>.nullable()</code> instead. Example: <code>field.string().nullable()</code>
     */
    readonly isNullable?: boolean;
    /**
     * Defines if the property should be set to the default value if the value is not parsable.
     * By default, the property will throw an error if the value is not parsable.
     */
    readonly useDefaultValueOnParseError?: boolean;
    /**
     * Defines the key in the provided object from which the property should be mapped.
     * By default, the property will be mapped from the key with the same name as the property.
     */
    readonly mapFrom?: string;
    /**
     * Defines the custom error message to use when the property cannot be parsed.
     */
    readonly parsingErrorMessage?: (key: string, valueToParse: unknown, causedBy: unknown) => string;
}
