import type { AppliedDataSemantic } from '../Semantics.js';
import { SemanticType } from '../Semantics.js';
/**
 * Configuration options for the Derived semantic.
 * Controls source fields, transformation, and recalculation behavior.
 *
 * Use Derived when you need to combine, format, or transform existing field values
 */
export interface DerivedConfig {
    /**
     * List of source field names this value is derived from.
     */
    sourceFields: string[];
    /**
     * Name of a transformation function to apply to the source fields.
     */
    transformation?: string;
    /**
     * Whether to recalculate the value on update (default: true).
     */
    recalculateOnUpdate?: boolean;
    /**
     * Whether to allow manual override of the derived value.
     */
    allowManualOverride?: boolean;
    /**
     * Custom metadata for the derived field.
     */
    metadata?: Record<string, unknown>;
    /**
     * Index signature to allow additional properties.
     */
    [key: string]: unknown;
}
/**
 * Type-safe configuration for Derived semantic.
 */
export interface AppliedDerivedSemantic extends AppliedDataSemantic {
    id: SemanticType.Derived;
    config?: DerivedConfig;
}
/**
 * Type guard to check if a semantic is a Derived semantic.
 */
export declare const isDerivedSemantic: (semantic: AppliedDataSemantic) => semantic is AppliedDerivedSemantic;
/**
 * Helper function to create a Derived semantic with configuration.
 */
export declare const createDerivedSemantic: (config: DerivedConfig) => AppliedDerivedSemantic;
/**
 * Default configuration for Derived semantic.
 */
export declare const DEFAULT_DERIVED_CONFIG: Partial<DerivedConfig>;
//# sourceMappingURL=Derived.d.ts.map