import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb';
import type { CheckOperationUsageStats, CompositionError, CompositionWarning, FederatedGraphSchemaChange, GraphPruningIssue, LintIssue, SchemaChange } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb';
export type JsonCheckSchemaOutputDescriptor = {
    status: 'error' | 'success';
    code: EnumStatusCode;
    details?: string;
    message?: string;
    url?: string;
    proposals?: {
        message: string;
    };
    traffic?: {
        message: string;
    };
    featureSubgraphCheck?: {
        message: string;
    };
    changes?: {
        breaking: SchemaChange[];
        nonBreaking: SchemaChange[];
    };
    composition?: {
        errors: CompositionError[];
        warnings: CompositionWarning[];
    };
    lint?: {
        errors: LintIssue[];
        warnings: LintIssue[];
    };
    graphPrune?: {
        errors: GraphPruningIssue[];
        warnings: GraphPruningIssue[];
    };
    composedSchemaBreakingChanges?: FederatedGraphSchemaChange[];
    extensions?: {
        message: string;
    };
    exceededRowLimit?: boolean;
    rowLimit: number;
    operationUsageStats?: CheckOperationUsageStats;
};
export declare class JsonCheckSchemaOutputBuilder {
    private readonly data;
    private readonly outFile?;
    constructor(code: EnumStatusCode, rowLimit: number, outFile?: string);
    setUrl(url: string): this;
    setCode(code: EnumStatusCode): this;
    setStatus(success: boolean): this;
    setMessage(message: string): this;
    setDetails(details: string | undefined): this;
    setProposals(message: string): this;
    initProposals(message: string): this;
    setTraffic(message: string): this;
    setFeatureSubgraphCheck(message: string): this;
    markTrafficLinkedFailed(fallbackMessage: string): this;
    addBreakingChanges(changes: SchemaChange[]): this;
    addNonBreakingChanges(changes: SchemaChange[]): this;
    setOperationUsageStats(stats: CheckOperationUsageStats): this;
    addCompositionErrors(errors: CompositionError[]): this;
    addCompositionWarnings(warnings: CompositionWarning[]): this;
    addLintErrors(errors: LintIssue[]): this;
    addLintWarnings(warnings: LintIssue[]): this;
    addGraphPruneErrors(errors: GraphPruningIssue[]): this;
    addGraphPruneWarnings(warnings: GraphPruningIssue[]): this;
    markGraphPruneLinkedFailed(): this;
    addComposedSchemaBreakingChanges(changes: FederatedGraphSchemaChange[]): this;
    setExtensionError(message: string): this;
    setExceededRowLimit(exceeded: boolean): this;
    build(): JsonCheckSchemaOutputDescriptor;
    /**
     * Writes valid JSON either to stdout or a file.
     */
    write(): Promise<void>;
    /**
     * JSON.stringify replacer that strips protobuf V2 internal fields
     * (like $typeName) so the output remains a clean, user-facing format.
     */
    private static jsonReplacer;
    private serializeOutput;
}
