import { CompositeKey, EntitySaveOptions, FieldValueCollection } from "@memberjunction/core";
import { MJComponentEntity } from "../generated/entity_subclasses.js";
import { ComponentSpec } from "@memberjunction/interactive-component-types";
export declare class MJComponentEntityExtended extends MJComponentEntity {
    /**
     * Whenever a Component record is saved, if it is a new record or if the Specification field
     * has changed, we will recalculate the values of the hasCustomProps, hasCustomEvents, RequiresData, DependencyCount fields,
     * and sync Description, FunctionalRequirements, and TechnicalDesign from the Specification (source of truth)
     * @param options
     * @returns
     */
    Save(options?: EntitySaveOptions): Promise<boolean>;
    protected _spec: ComponentSpec | undefined;
    /**
     * Read-only representation of the value in the @see Specification property.
     * **DO NOT** modify this object it is for reference and ease of access only. Writing must be done to the
     * Specification property which is what persists in the database. Changes to the Specification property will
     * also result in an automatic update to this object.
     */
    get spec(): ComponentSpec;
    Set(FieldName: string, Value: any): void;
    protected SetSpec(newSpec: string | ComponentSpec): void;
    InnerLoad(CompositeKey: CompositeKey, EntityRelationshipsToLoad?: string[]): Promise<boolean>;
    NewRecord(newValues?: FieldValueCollection): boolean;
    LoadFromData(data: any, _replaceOldValues?: boolean): Promise<boolean>;
}
//# sourceMappingURL=MJComponentEntityExtended.d.ts.map