import { Namespace, Program } from "@typespec/compiler";
import { AliasStatementNode, ModelStatementNode, OperationStatementNode, InterfaceStatementNode, EnumStatementNode, NamespaceStatementNode, ModelExpressionNode, IntersectionExpressionNode, SyntaxKind, BaseNode, UnionStatementNode, UnionExpressionNode, AugmentDecoratorStatementNode, ScalarStatementNode, JsNamespaceDeclarationNode, ObjectLiteralNode, ConstStatementNode } from "@typespec/compiler/ast";
export declare class NamespaceModel {
    kind: SyntaxKind;
    name: string;
    node: NamespaceStatementNode | JsNamespaceDeclarationNode;
    operations: Map<string, OperationStatementNode | InterfaceStatementNode>;
    resources: Map<string, AliasStatementNode | ModelStatementNode | ModelExpressionNode | IntersectionExpressionNode | EnumStatementNode | ScalarStatementNode | UnionStatementNode | UnionExpressionNode | ObjectLiteralNode>;
    models: Map<string, ModelStatementNode | ModelExpressionNode | IntersectionExpressionNode | EnumStatementNode | ScalarStatementNode | UnionStatementNode | UnionExpressionNode | ObjectLiteralNode>;
    aliases: Map<string, AliasStatementNode>;
    augmentDecorators: AugmentDecoratorStatementNode[];
    constants: ConstStatementNode[];
    constructor(name: string, ns: Namespace, program: Program);
    /**
     * Don't emit an empty namespace
     * @returns true if there are models, resources or operations
     */
    shouldEmit(): boolean;
}
export declare function generateId(obj: BaseNode | NamespaceModel | undefined): string | undefined;
//# sourceMappingURL=namespace-model.d.ts.map