import { PropertyConfigurationObject } from "../classes/codeConfig"; import { FilterHelper } from "../modules/filterHelper"; import { OptionHelper } from "../modules/optionHelper"; import { Filter } from "./Filter"; import { Option } from "./Option"; import { GrouparooRecord } from "./GrouparooRecord"; import { RecordProperty } from "./RecordProperty"; import { Source } from "./Source"; import { CommonModel } from "../classes/commonModel"; declare const jsMap: { readonly boolean: "boolean" | "text"; readonly date: "bigint"; readonly email: "text"; readonly float: "float"; readonly integer: "bigint"; readonly phoneNumber: "text"; readonly string: "text"; readonly url: "text"; }; export declare const propertyJSToSQLType: (jsType: keyof typeof jsMap) => "bigint" | "boolean" | "float" | "text"; export declare const PropertyTypes: readonly ["boolean", "date", "email", "float", "integer", "phoneNumber", "string", "url"]; export interface SimplePropertyOptions extends OptionHelper.SimpleOptions { } declare const STATES: readonly ["draft", "ready", "deleted"]; export interface PropertyFiltersWithKey extends FilterHelper.FiltersWithKey { } export declare class Property extends CommonModel { idPrefix(): string; key: string; type: typeof PropertyTypes[number]; unique: boolean; sourceId: string; state: typeof STATES[number]; locked: string; isPrimaryKey: boolean; isArray: boolean; source: Source; __options: Option[]; filters: Filter[]; RecordProperties: RecordProperty[]; parameterizedQueryFromRecord(q: string, record: GrouparooRecord): Promise; test(options?: SimplePropertyOptions): Promise; getOptions(sourceFromEnvironment?: boolean): Promise; setOptions(options: SimplePropertyOptions, test?: boolean, externallyValidate?: boolean): Promise; afterSetOptions(hasChanges: boolean): Promise; validateOptions(options?: SimplePropertyOptions, externallyValidate?: boolean): Promise; getPlugin(): Promise<{ plugin: import("..").GrouparooPlugin; pluginConnection: import("..").PluginConnection; pluginApp: import("..").PluginApp; }>; getFilters(): Promise; setFilters(filters: PropertyFiltersWithKey[], externallyValidate?: boolean): Promise; afterSetFilters(hasChanges: boolean): Promise; pluginOptions(propertyOptions?: SimplePropertyOptions): Promise<{ key: string; displayName?: string; description: string; required: boolean; type: import("..").PluginOptionType; options: { key: string; description?: string; default?: boolean; examples?: any[]; }[]; }[]>; validateFilters(filters: PropertyFiltersWithKey[]): Promise; apiData(): Promise<{ id: string; sourceId: string; key: string; type: "string" | "boolean" | "url" | "float" | "integer" | "date" | "email" | "phoneNumber"; state: "ready" | "draft" | "deleted"; unique: boolean; isPrimaryKey: boolean; locked: string; options: OptionHelper.SimpleOptions; filters: FilterHelper.FiltersWithKey[]; isArray: boolean; createdAt: number; updatedAt: number; recordProperties: { recordId: string; property: Property; state: "pending" | "ready" | "draft"; valueChangedAt: number; stateChangedAt: number; confirmedAt: number; startedAt: number; position: number; unique: boolean; key: string; value: string | number | boolean | Date; invalidValue: string; invalidReason: string; }[]; }>; getConfigId(): string; getConfigObject(): Promise; static ensureUniquePrimaryKey(instance: Property): Promise; static ensureOptions(instance: Property): Promise; static updateState(instance: Property): Promise; static ensureNonArrayAndUnique(instance: Property): Promise; static ensureUniqueProperties(instance: Property): Promise; static ensureSourceReady(instance: Property): Promise; static validateQuery(instance: Property): Promise; static validateReservedKeys(instance: Property): Promise; static noUniqueOrArrayThroughNonUniqueMapping(instance: Property): Promise; static noUpdateIfLocked(instance: Property): Promise; static runPropertyWithNoOptionsOrFiltersWhenReady(instance: Property): Promise; static updateRecordPropertyUniqueness(instance: Property): Promise; static ensureNotInUse(instance: Property, excludeMappingOwnerIds?: string[]): Promise; static updateRecordsOnTypeChange(instance: Property): Promise; static updateSampleRecords(instance: Property): Promise; static noDestroyIfLocked(instance: Property): Promise; static destroyOptions(instance: Property): Promise; static stopRuns(instance: Property): Promise; static destroyFilters(instance: Property): Promise; static destroyRecordProperties(instance: Property): Promise; static invalidateCache(): Promise; } export {};