import { DeepPartial } from "@azure-tools/codegen";
import { Info } from "./info";
import { Metadata } from "./metadata";
import { OperationGroup } from "./operation";
import { Parameter } from "./parameter";
import { Schemas } from "./schemas";
import { Security } from "./security";
/** the model that contains all the information required to generate a service api */
export interface CodeModel extends Metadata {
    /** Code model information */
    info: Info;
    /** All schemas for the model */
    schemas: Schemas;
    /** All operations  */
    operationGroups: Array<OperationGroup>;
    /** all global parameters (ie, ImplementationLocation = client ) */
    globalParameters?: Array<Parameter>;
    security: Security;
}
export declare class CodeModel extends Metadata implements CodeModel {
    constructor(title: string, sourceTracking?: boolean, objectInitializer?: DeepPartial<CodeModel>);
    private get globals();
    getOperationGroup(group: string): OperationGroup;
    findGlobalParameter(predicate: (value: Parameter) => boolean): Parameter | undefined;
    addGlobalParameter(parameter: Parameter): Parameter;
    addGlobalParameter(find: (value: Parameter) => boolean, create: () => Parameter): Parameter;
}
export type ValueOrFactory<T> = T | (() => T);
//# sourceMappingURL=code-model.d.ts.map