/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { CommandElement } from "../elements/index.js";
import type { Model } from "./Model.js";
import { ValueModel } from "./ValueModel.js";
export declare class CommandModel extends ValueModel<CommandElement> implements CommandElement {
    tag: CommandElement.Tag;
    direction?: CommandElement.Direction;
    response?: string;
    operationalResponse?: CommandModel | null;
    get fabricScoped(): boolean;
    get isRequest(): boolean;
    get isResponse(): boolean;
    set isResponse(isResponse: boolean);
    get responseModel(): CommandModel | undefined;
    get effectiveDirection(): CommandElement.Direction | undefined;
    get effectiveResponse(): string | undefined;
    get requiredFields(): {
        name: string;
        type?: string;
        description?: string;
        details?: string;
        xref?: import("./CrossReference.js").CrossReference.Definition;
        children?: (import("../elements/BaseElement.js").BaseElement[] & import("../elements/ValueElement.js").ValueElement[]) | undefined;
        isGlobal?: boolean;
        isSeed?: boolean;
        asOf?: import("../index.js").Specification.Revision;
        until?: import("../index.js").Specification.Revision;
        matchTo?: import("../elements/BaseElement.js").BaseElement.MatchDirective;
        constraint?: import("../index.js").Constraint.Definition;
        conformance?: import("../index.js").Conformance.Definition;
        access?: import("../index.js").Access.Definition;
        quality?: import("../index.js").Quality.Definition;
        byteSize?: import("../elements/ValueElement.js").ValueElement.ByteSize;
        default?: import("../index.js").FieldValue;
        id: number;
        tag: `${CommandElement.Tag}`;
        direction?: `${CommandElement.Direction}`;
        response?: string;
    };
    /**
     * Commands may re-use the ID for request and response so identification requires the ID in conjunction with the
     * direction.
     */
    get discriminator(): CommandElement.Direction;
    constructor(definition: CommandModel.Definition, ...children: Model.ChildDefinition<CommandModel>[]);
    toElement(omitResources?: boolean, extra?: Record<string, unknown>): CommandElement;
    finalize(): void;
    static Tag: import("../index.js").ElementTag;
    static requiresId: boolean;
}
export declare namespace CommandModel {
    type Definition = Model.Definition<CommandModel> & {
        operationalResponse?: CommandModel;
    };
}
//# sourceMappingURL=CommandModel.d.ts.map