import type { ICompositeIntrospectChild } from './ICompositeIntrospectChild';
/**
 * WoT-style protocol form for multi-protocol access.
 * @see COMPONENT-COMMON.md, MATRIX-PROTOCOL-3 §21.5
 */
export interface IProtocolForm {
    href: string;
    contentType?: string;
    op?: string | string[];
    'htv:methodName'?: string;
    'mqv:topic'?: string;
    'mx:accepts'?: string;
    'mx:emits'?: string;
    [key: string]: unknown;
}
export interface IActionAffordance {
    title?: string;
    description?: string;
    input?: Record<string, unknown>;
    output?: Record<string, unknown>;
    forms?: IProtocolForm[];
    safe?: boolean;
    idempotent?: boolean;
}
export interface IEventAffordance {
    title?: string;
    description?: string;
    data?: Record<string, unknown>;
    forms?: IProtocolForm[];
}
export interface IPropertyAffordance {
    title?: string;
    description?: string;
    type?: string;
    readOnly?: boolean;
    writeOnly?: boolean;
    observable?: boolean;
    forms?: IProtocolForm[];
}
export interface ISemanticAnnotations {
    category?: string;
    dataTypes?: string[];
    capabilities?: string[];
    tags?: string[];
}
export interface ILocalityInfo {
    root: string;
    /** @deprecated Use `root`. */
    realm?: string;
    zone?: string;
    region?: string;
    latencyHint?: 'local' | 'regional' | 'global';
}
/**
 * WoT-compatible introspection response.
 * @see COMPONENT-COMMON.md, MATRIX-PROTOCOL-3 §21.5
 */
export interface IIntrospectResponse {
    mount: string;
    componentClass: string;
    accepts: string[];
    emits: string[];
    tracks: string[];
    acceptsSchema?: Record<string, unknown>;
    emitsSchema?: Record<string, unknown>;
    children?: ICompositeIntrospectChild[];
    '@context'?: string | string[];
    '@type'?: string | string[];
    title?: string;
    description?: string;
    implements?: string[];
    semantics?: ISemanticAnnotations;
    actions?: Record<string, IActionAffordance>;
    events?: Record<string, IEventAffordance>;
    properties?: Record<string, IPropertyAffordance>;
    locality?: ILocalityInfo;
}
/**
 * Interface for components that support introspection.
 */
export interface IIntrospectableComponent {
    onIntrospect(): IIntrospectResponse;
}
//# sourceMappingURL=IIntrospectableComponent.d.ts.map