import { Dictionary } from '@azure-tools/linq';
import { SchemaDetails, LanguageDetails, EnhancedTypeDeclaration, Boolean, SchemaDefinitionResolver } from '../llcsharp/exports';
import { State } from './state';
import { Project as codeDomProject } from '@azure-tools/codegen-csharp';
import { ModelExtensionsNamespace } from '../models/model-extensions';
import { ModuleNamespace } from '../module/module-namespace';
import { CmdletNamespace } from '../cmdlets/namespace';
import { AutorestExtensionHost as Host } from '@autorest/extension-base';
import { PropertyDetails, exportedModels as T } from '@azure-tools/codemodel-v3';
import { DeepPartial } from '@azure-tools/codegen';
import { PwshModel } from '../utils/PwshModel';
import { ModelState } from '../utils/model-state';
import { Schema as NewSchema } from '@autorest/codemodel';
import { TspHost } from '../utils/tsp-host';
export type Schema = T.SchemaT<LanguageDetails<SchemaDetails>, LanguageDetails<PropertyDetails>>;
export interface Metadata {
    authors: string;
    owners: string;
    requireLicenseAcceptance: boolean;
    description: string;
    copyright: string;
    tags: string;
    companyName: string;
    licenseUri: string;
    projectUri: string;
    requiredModules: Array<PsRequiredModule>;
    requiredModulesAsString: string;
    requiredAssemblies: Array<string>;
    requiredAssembliesAsString: string;
    nestedModules: Array<string>;
    nestedModulesAsString: string;
    formatsToProcess: Array<string>;
    formatsToProcessAsString: string;
    typesToProcess: Array<string>;
    typesToProcessAsString: string;
    scriptsToProcess: Array<string>;
    scriptsToProcessAsString: string;
    functionsToExport: Array<string>;
    functionsToExportAsString: string;
    cmdletsToExport: Array<string>;
    cmdletsToExportAsString: string;
    aliasesToExport: Array<string>;
    aliasesToExportAsString: string;
}
export interface PsRequiredModule {
    name: string;
    version: string;
}
interface ModelCmdletDirective {
    'model-name': string;
    'cmdlet-name'?: string;
}
export declare class NewPSSwitch extends Boolean {
    get declaration(): string;
}
export declare class PSSchemaResolver extends SchemaDefinitionResolver {
    inResolve: boolean;
    resolveTypeDeclaration(schema: NewSchema | undefined, required: boolean, state: ModelState<PwshModel>, isFixedArray?: boolean): EnhancedTypeDeclaration;
}
export declare class Project extends codeDomProject {
    protected service: Host | TspHost;
    azure: boolean;
    addToString: boolean;
    license: string;
    pwshCommentHeader: string;
    pwshCommentHeaderForCsharp: string;
    csharpCommentHeader: string;
    csharpCommentHeaderForCsharp: string;
    cmdletFolder: string;
    modelCmdletFolder: string;
    endpointResourceIdKeyName: string;
    endpointSuffixKeyName: string;
    customFolder: string;
    utilsFolder: string;
    internalFolder: string;
    testFolder: string;
    runtimeFolder: string;
    binFolder: string;
    objFolder: string;
    exportsFolder: string;
    docsFolder: string;
    examplesFolder: string;
    resourcesFolder: string;
    uxFolder: string;
    serviceName: string;
    moduleName: string;
    title: string;
    rootModuleName: string;
    csproj: string;
    nuspec: string;
    gitIgnore: string;
    gitAttributes: string;
    propertiesExcludedForTableview: string;
    readme: string;
    afterBuildTasksPath: string;
    afterBuildTasksArgs: string;
    assemblyInfoPath: string;
    assemblyCompany: string;
    assemblyProduct: string;
    assemblyCopyright: string;
    dllName: string;
    dll: string;
    psd1: string;
    psm1: string;
    psm1Custom: string;
    psm1Internal: string;
    formatPs1xml: string;
    autoSwitchView: boolean;
    apiFolder: string;
    baseFolder: string;
    moduleFolder: string;
    schemaDefinitionResolver: SchemaDefinitionResolver;
    moduleVersion: string;
    profiles: Array<string>;
    modelCmdlets: Array<ModelCmdletDirective>;
    modelCmdletsInPS: string;
    inputHandlers: Array<string>;
    prefix: string;
    subjectPrefix: string;
    projectNamespace: string;
    overrides: Dictionary<string>;
    serviceNamespace: ModuleNamespace;
    cmdlets: CmdletNamespace;
    modelsExtensions: ModelExtensionsNamespace;
    accountsVersionMinimum: string;
    dependencyModuleFolder: string;
    metadata: Metadata;
    state: State;
    helpLinkPrefix: string;
    fixedArray: boolean;
    get model(): PwshModel;
    constructor(service: Host | TspHost, objectInitializer?: DeepPartial<Project>);
    init(state?: ModelState<PwshModel>): Promise<this>;
    /**
     * Preprocess some list properties in metadata to string properties,
     * so they can be easily used in csharp templates.
     */
    private preprocessMetadata;
    private convertToPsListAsString;
}
export {};
//# sourceMappingURL=project.d.ts.map