import type { Blueprint } from "../../../blueprint";
import type { ResourceId } from "../../../blueprint/Resources/ResourceId";
export interface DesignRecommendationsRequest {
    blueprint: Blueprint;
}
export interface DesignRecommendationsResponse {
    recommendations: Recommendation[];
}
export interface RecommendationBase {
    issueCode: string;
    severity: Severity;
    text: string;
    url?: string;
    issueType: IssueType;
    suggestions: Suggestion[];
}
export interface ResourceRecommendation extends RecommendationBase {
    resource: ResourceId;
}
export interface ConnectionRecommendation extends RecommendationBase {
    connection: ConnectionId;
}
export declare type Recommendation = ConnectionRecommendation | ResourceRecommendation;
export interface ConnectionId {
    source: ResourceId;
    target: ResourceId;
}
export interface Suggestion {
    description: string;
    blueprint: Blueprint;
}
export declare type Severity = 'Error' | 'Information' | 'Warning';
export declare type IssueType = 'Billing' | 'Compliance' | 'Connectivity' | 'Misc' | 'Security';
export declare const isDesignRecommendationsRequest: import("@altostra/type-validations").ObjectOfTypeValidation<DesignRecommendationsRequest>;
export declare const isSeverity: import("@altostra/type-validations").TypeValidation<Severity>;
export declare const isIssueType: import("@altostra/type-validations").TypeValidation<IssueType>;
export declare const isResourceRecommendation: import("@altostra/type-validations").ObjectOfTypeValidation<ResourceRecommendation>;
export declare const isConnectionRecommendation: import("@altostra/type-validations").ObjectOfTypeValidation<ConnectionRecommendation>;
export declare const isRecommendation: import("@altostra/type-validations").TypeValidation<Recommendation>;
export declare const isDesignRecommendationsResponse: import("@altostra/type-validations").ObjectOfTypeValidation<DesignRecommendationsResponse>;
