import * as spec from '@jsii/spec';
import * as ts from 'typescript';
import { Emitter } from './emitter';
import { JsiiDiagnostic } from './jsii-diagnostic';
import { ProjectInfo } from './project-info';
export interface ValidationResult extends ts.EmitResult {
    readonly usedFeatures?: spec.JsiiFeature[];
}
export declare class Validator implements Emitter {
    readonly projectInfo: ProjectInfo;
    readonly assembly: spec.Assembly;
    static VALIDATIONS: ValidationFunction[];
    constructor(projectInfo: ProjectInfo, assembly: spec.Assembly);
    emit(): ValidationResult;
}
export type DiagnosticEmitter = (diag: JsiiDiagnostic) => void;
export type FeatureTracker = (feat: spec.JsiiFeature) => void;
export type ValidationFunction = (validator: Validator, assembly: spec.Assembly, diagnostic: DiagnosticEmitter, useFeatures: FeatureTracker) => void;
//# sourceMappingURL=validator.d.ts.map