import { CodeModel, ObjectSchema, Operation } from "@autorest/codemodel";
import { TypespecObject, TypespecEnum } from "../interfaces";
export interface _ArmResourceOperation {
    Name: string;
    Path: string;
    Method: string;
    OperationID: string;
    IsLongRunning: boolean;
    Description?: string;
    PagingMetadata: _ArmPagingMetadata | null;
}
export interface _ArmPagingMetadata {
    Method: string;
    ItemName: string;
    NextLinkName: string;
}
export interface Metadata {
    Resources: Record<string, ArmResource[]>;
    RenameMapping: Record<string, string>;
    OverrideOperationName: Record<string, string>;
}
export interface ArmResource {
    Name: string;
    GetOperation?: _ArmResourceOperation;
    ExistOperation?: _ArmResourceOperation;
    CreateOperation?: _ArmResourceOperation;
    UpdateOperation?: _ArmResourceOperation;
    DeleteOperation?: _ArmResourceOperation;
    ListOperations: _ArmResourceOperation[];
    OperationsFromResourceGroupExtension: _ArmResourceOperation[];
    OperationsFromSubscriptionExtension: _ArmResourceOperation[];
    OperationsFromManagementGroupExtension: _ArmResourceOperation[];
    OperationsFromTenantExtension: _ArmResourceOperation[];
    OtherOperations: _ArmResourceOperation[];
    Parents: string[];
    SwaggerModelName: string;
    ResourceType: string;
    ResourceKey: string;
    ResourceKeySegment: string;
    IsTrackedResource: boolean;
    IsTenantResource: boolean;
    IsSubscriptionResource: boolean;
    IsManagementGroupResource: boolean;
    IsExtensionResource: boolean;
    IsSingletonResource: boolean;
}
export interface OperationWithResourceOperationFlag extends Operation {
    isResourceOperation?: boolean;
}
export declare function getResourceOperations(resource: ArmResource): Record<string, Operation>;
export declare function getSingletonResouceListOperation(resource: ArmResource): Operation | undefined;
export declare function getResourceExistOperation(resource: ArmResource): Operation | undefined;
export interface ArmResourceSchema extends ObjectSchema {
    resourceMetadata: ArmResource[];
}
export interface ArmResourcePropertiesModel extends ObjectSchema {
    isPropertiesModel: boolean;
}
export declare function tagSchemaAsResource(schema: ObjectSchema, metadata: Metadata): void;
export declare function isResourceSchema(schema: ObjectSchema): schema is ArmResourceSchema;
export declare function filterArmModels(codeModel: CodeModel, objects: TypespecObject[]): TypespecObject[];
export declare function filterArmEnums(enums: TypespecEnum[]): TypespecEnum[];
//# sourceMappingURL=resource-discovery.d.ts.map