import { DateTimePropertyType, PropertyType } from '@limetech/lime-web-components';
import { DateType } from '@limetech/lime-elements';
/**
 * Get the actual type of a property, resolving 'system' type to the underlying type.
 *
 * System properties in Lime CRM have `type: 'system'` in the metadata (a categorical marker
 * from the database schema fieldtype 255), but we need to know their actual data types
 * to render appropriate input controls.
 *
 * @param property - The property to get the type for
 * @param property.type
 * @param property.name
 * @returns The actual property type (resolves 'system' to the underlying type)
 *
 * @example
 * ```typescript
 * const property = { name: '_timestamp', type: 'system' };
 * getActualPropertyType(property); // Returns 'time'
 * ```
 */
export declare function getActualPropertyType(property: {
    type: PropertyType;
    name: string;
}): PropertyType;
/**
 * Map system property names to their actual data types.
 *
 * This mapping is necessary because system properties have `type='system'` in the metadata
 * (for historical reasons - database schema fieldtype 255), but we need to know their
 * actual data types to render appropriate inputs.
 *
 * The mapping is based on the Lime CRM database schema:
 * - System datetime fields: `timestamp`, `createdtime`, `updatedtime`
 * - System integer fields: `id`, `createduser`, `updateduser`
 * - System string fields: `descriptive`
 *
 * @param propertyName - The system property name (with or without underscore prefix)
 * @returns The actual property type
 *
 * @example
 * ```typescript
 * resolveSystemPropertyType('_timestamp');  // Returns 'time'
 * resolveSystemPropertyType('timestamp');   // Returns 'time'
 * resolveSystemPropertyType('_id');         // Returns 'integer'
 * resolveSystemPropertyType('unknown');     // Returns 'string' (default)
 * ```
 */
export declare function resolveSystemPropertyType(propertyName: string): PropertyType;
/**
 * Map Lime CRM property types to Lime Elements date picker types.
 *
 * Lime CRM and Lime Elements use different naming conventions for date/time types,
 * so we need to translate between them:
 *
 * - `'date'` → `'date'` - Date only
 * - `'time'` → `'datetime'` - Full datetime (date + time) in Lime CRM
 * - `'timeofday'` → `'time'` - Time only (hh:mm)
 * - `'month'` → `'month'` - Month picker (YYYY-MM)
 * - `'quarter'` → `'quarter'` - Quarter picker
 * - `'year'` → `'year'` - Year picker
 *
 * @param propertyType - The Lime CRM date/time property type
 * @returns The corresponding Lime Elements date picker type
 *
 * @example
 * ```typescript
 * mapPropertyTypeToPickerType('time');      // Returns 'datetime'
 * mapPropertyTypeToPickerType('timeofday'); // Returns 'time'
 * mapPropertyTypeToPickerType('date');      // Returns 'date'
 * ```
 */
export declare function mapPropertyTypeToPickerType(propertyType: DateTimePropertyType): DateType;
//# sourceMappingURL=type-resolution.d.ts.map