import { ArtifactsType, NodeInfoType, SoftwareInfoOptions } from './types';
import { PublicModelInterface } from '../../../core/types';
import { IKosDataModel, KosCreationContext } from '../../../core/core/kosModel';

export declare const MODEL_TYPE = "software-info-model";
/**
 * SoftwareInfo - System software version and artifact management for KOS devices.
 *
 * The SoftwareInfo model provides comprehensive visibility into installed software versions,
 * artifacts, and system components across all nodes in a KOS device. This model is essential
 * for applications that need to display system information, perform version checks, or
 * manage software compatibility and updates.
 *
 * ## Key Features
 * - **Node-Based Architecture** - Track software information across multiple device nodes
 * - **Artifact Management** - Complete visibility into installed software components and versions
 * - **Version Tracking** - Monitor KOS framework versions and application artifacts
 * - **Group Organization** - Automatic categorization of artifacts by functional groups
 * - **System Overview** - Comprehensive system software inventory and version reporting
 * - **Compatibility Checking** - Version information for dependency and compatibility validation
 *
 * ## Data Structure
 * The model organizes software information hierarchically:
 * - **Nodes** - Individual system nodes (primary, secondary, etc.)
 * - **Artifacts** - Software components installed on each node
 * - **Groups** - Logical grouping of related artifacts (core, ui, services, etc.)
 * - **Versions** - Specific version information for each artifact
 *
 * ## Common Use Cases
 * - **System Information Display** - Show installed software versions to users and administrators
 * - **Version Compatibility** - Check software versions before updates or feature activation
 * - **Support Diagnostics** - Provide detailed software information for troubleshooting
 * - **Update Planning** - Assess current software state before planning updates
 * - **Inventory Management** - Track and report on installed software components
 *
 * @interface
 * @example Basic Usage
 * ```typescript
 * const softwareInfo = SoftwareInfo.instance('system-info').build();
 *
 * // Access system software information across nodes
 * const nodes = softwareInfo.nodes;
 * nodes?.forEach(node => {
 *   console.log(`Node ${node.nodeName}: KOS ${node.kosVersion}`);
 * });
 * ```
 *
 * @group KOS Model
 * @category System Integration
 * @useDeclaredType
 *
 * @see {@link SoftwareInfoOptions} - Configuration options for SoftwareInfo model
 * @see {@link NodeInfoType} - Individual node software information
 * @see {@link ArtifactsType} - Software artifact information
 * @see {@link getSoftwareInfos} - Service function for loading software data
 */
export type SoftwareInfoModel = PublicModelInterface<SoftwareInfoModelImpl>;
/**
 * @ignore
 * @internal
 */
export declare class SoftwareInfoModelImpl implements IKosDataModel {
    /** Unique identifier for the model instance */
    id: string;
    private logger;
    /** Software information for all device nodes, including KOS versions and artifacts */
    nodes: NodeInfoType[] | undefined;
    constructor(modelId: string, _options: SoftwareInfoOptions, context: KosCreationContext);
    /**
     * @internal
     */
    init(): Promise<void>;
    /**
     * Groups artifacts by a specified property for organization.
     * @param arr Array of artifacts to group
     * @param property Property to group by
     * @returns Grouped artifacts organized by the specified property
     * @private
     */
    groupBy(arr: ArtifactsType[], property: keyof ArtifactsType): Record<string, ArtifactsType[]>;
    /**
     * @internal
     */
    load(): Promise<void>;
}
//# sourceMappingURL=software-info-model.d.ts.map