import { PrimaryKeyType, DateValueType, PropertyConfig, Arrayable, DataValue, MaybeFunction, ModelType, DataDescription, ModelInstance, PropertyType, CanBeNullableType } from '../types.js'; import { OrmPropertyConfig, DatabaseKeyPropertyConfig } from './types.js'; /** * A property that automatically updates whenever the model instance is saved. * @param config */ export declare const LastModifiedDateProperty: = DateValueType>(config?: PropertyConfig) => Readonly<{ getConfig: () => object; getChoices: () => readonly import("../types.js").ChoiceTypes[]; getDefaultValue: () => T | undefined; getConstantValue: () => T | undefined; getPropertyType: () => PropertyType | string; createGetter: (value: T, modelData: Readonly<{ [s: string]: any; }>, modelInstance: ModelInstance, object, object>) => import("../types.js").ValueGetter, object, object>; getZod: () => import("zod").ZodType>; getValidator: (valueGetter: import("../types.js").ValueGetter, object, object>) => import("../types.js").PropertyValidator>; }>; /** * A property that marks the model's expiry as a Unix timestamp in minutes. * Datastores can inspect this marker and infer the model ttlPropertyName. * @param config */ export declare const TtlProperty: = number>(config?: PropertyConfig) => Readonly<{ getConfig: () => object; getChoices: () => readonly import("../types.js").ChoiceTypes[]; getDefaultValue: () => T | undefined; getConstantValue: () => T | undefined; getPropertyType: () => PropertyType | string; createGetter: (value: T, modelData: Readonly<{ [s: string]: any; }>, modelInstance: ModelInstance, object, object>) => import("../types.js").ValueGetter, object, object>; getZod: () => import("zod").ZodType>; getValidator: (valueGetter: import("../types.js").ValueGetter, object, object>) => import("../types.js").PropertyValidator>; }>; /** * A property that represents a foreign key to another model in a database. * By default it is a "uuid" type, but if you want to use an arbitrary string, or an integer type you can set the `dataType` property. * NOTE: auto is ignored in config. * @param config - Additional configurations. */ export declare const ForeignKeyProperty: (model: MaybeFunction>, config?: Omit, "auto" | "primaryKeyGenerator">) => (Readonly<{ getConfig: () => object; getChoices: () => readonly import("../types.js").ChoiceTypes[]; getDefaultValue: () => string | undefined; getConstantValue: () => string | undefined; getPropertyType: () => PropertyType | string; createGetter: (value: string, modelData: Readonly<{ [s: string]: any; }>, modelInstance: ModelInstance, object, object>) => import("../types.js").ValueGetter, object, object>; getZod: () => import("zod").ZodType>; getValidator: (valueGetter: import("../types.js").ValueGetter, object, object>) => import("../types.js").PropertyValidator>; }> | Readonly<{ getConfig: () => object; getChoices: () => readonly import("../types.js").ChoiceTypes[]; getDefaultValue: () => number | undefined; getConstantValue: () => number | undefined; getPropertyType: () => PropertyType | string; createGetter: (value: number, modelData: Readonly<{ [s: string]: any; }>, modelInstance: ModelInstance, object, object>) => import("../types.js").ValueGetter, object, object>; getZod: () => import("zod").ZodType>; getValidator: (valueGetter: import("../types.js").ValueGetter, object, object>) => import("../types.js").PropertyValidator>; }>) & { getReferencedId: (instanceValues: TValue) => TValue; getReferencedModel: () => ModelType; }; /** * A property that represents a primary key in a database. * By default it is a "uuid" type, but if you want to use an arbitrary string, or an integer type you can set the `dataType` property. * Includes an optional primaryKeyGenerator function that can be used to generate a primary key. This can allow primary keys that are generated at runtime, or grabbed from a database. * @param config - Additional configurations. * @returns */ export declare const PrimaryKeyProperty: = PrimaryKeyType>(config?: DatabaseKeyPropertyConfig) => Readonly<{ getConfig: () => object; getChoices: () => readonly import("../types.js").ChoiceTypes[]; getDefaultValue: () => string | undefined; getConstantValue: () => string | undefined; getPropertyType: () => PropertyType | string; createGetter: (value: string, modelData: Readonly<{ [s: string]: any; }>, modelInstance: ModelInstance, object, object>) => import("../types.js").ValueGetter, object, object>; getZod: () => import("zod").ZodType>; getValidator: (valueGetter: import("../types.js").ValueGetter, object, object>) => import("../types.js").PropertyValidator>; }> | Readonly<{ getConfig: () => object; getChoices: () => readonly import("../types.js").ChoiceTypes[]; getDefaultValue: () => number | undefined; getConstantValue: () => number | undefined; getPropertyType: () => PropertyType | string; createGetter: (value: number, modelData: Readonly<{ [s: string]: any; }>, modelInstance: ModelInstance, object, object>) => import("../types.js").ValueGetter, object, object>; getZod: () => import("zod").ZodType>; getValidator: (valueGetter: import("../types.js").ValueGetter, object, object>) => import("../types.js").PropertyValidator>; }>; /** * Creates an orm based property config. * @param config - Additional configurations. */ export declare const ormPropertyConfig: >(config?: OrmPropertyConfig) => PropertyConfig;