import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
import type { IBinaryWriter } from "@protobuf-ts/runtime";
import type { BinaryReadOptions } from "@protobuf-ts/runtime";
import type { IBinaryReader } from "@protobuf-ts/runtime";
import type { PartialMessage } from "@protobuf-ts/runtime";
import { MessageType } from "@protobuf-ts/runtime";
/**
 * Output generated from semantically comparing two versions of a service
 * configuration.
 *
 * Includes detailed information about a field that have changed with
 * applicable advice about potential consequences for the change, such as
 * backwards-incompatibility.
 *
 * @generated from protobuf message google.api.ConfigChange
 */
export interface ConfigChange {
    /**
     * Object hierarchy path to the change, with levels separated by a '.'
     * character. For repeated fields, an applicable unique identifier field is
     * used for the index (usually selector, name, or id). For maps, the term
     * 'key' is used. If the field has no unique identifier, the numeric index
     * is used.
     * Examples:
     * - visibility.rules[selector=="google.LibraryService.ListBooks"].restriction
     * - quota.metric_rules[selector=="google"].metric_costs[key=="reads"].value
     * - logging.producer_destinations[0]
     *
     * @generated from protobuf field: string element = 1;
     */
    element: string;
    /**
     * Value of the changed object in the old Service configuration,
     * in JSON format. This field will not be populated if ChangeType == ADDED.
     *
     * @generated from protobuf field: string old_value = 2;
     */
    oldValue: string;
    /**
     * Value of the changed object in the new Service configuration,
     * in JSON format. This field will not be populated if ChangeType == REMOVED.
     *
     * @generated from protobuf field: string new_value = 3;
     */
    newValue: string;
    /**
     * The type for this change, either ADDED, REMOVED, or MODIFIED.
     *
     * @generated from protobuf field: google.api.ChangeType change_type = 4;
     */
    changeType: ChangeType;
    /**
     * Collection of advice provided for this change, useful for determining the
     * possible impact of this change.
     *
     * @generated from protobuf field: repeated google.api.Advice advices = 5;
     */
    advices: Advice[];
}
/**
 * Generated advice about this change, used for providing more
 * information about how a change will affect the existing service.
 *
 * @generated from protobuf message google.api.Advice
 */
export interface Advice {
    /**
     * Useful description for why this advice was applied and what actions should
     * be taken to mitigate any implied risks.
     *
     * @generated from protobuf field: string description = 2;
     */
    description: string;
}
/**
 * Classifies set of possible modifications to an object in the service
 * configuration.
 *
 * @generated from protobuf enum google.api.ChangeType
 */
export declare enum ChangeType {
    /**
     * No value was provided.
     *
     * @generated from protobuf enum value: CHANGE_TYPE_UNSPECIFIED = 0;
     */
    CHANGE_TYPE_UNSPECIFIED = 0,
    /**
     * The changed object exists in the 'new' service configuration, but not
     * in the 'old' service configuration.
     *
     * @generated from protobuf enum value: ADDED = 1;
     */
    ADDED = 1,
    /**
     * The changed object exists in the 'old' service configuration, but not
     * in the 'new' service configuration.
     *
     * @generated from protobuf enum value: REMOVED = 2;
     */
    REMOVED = 2,
    /**
     * The changed object exists in both service configurations, but its value
     * is different.
     *
     * @generated from protobuf enum value: MODIFIED = 3;
     */
    MODIFIED = 3
}
declare class ConfigChange$Type extends MessageType<ConfigChange> {
    constructor();
    create(value?: PartialMessage<ConfigChange>): ConfigChange;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ConfigChange): ConfigChange;
    internalBinaryWrite(message: ConfigChange, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.ConfigChange
 */
export declare const ConfigChange: ConfigChange$Type;
declare class Advice$Type extends MessageType<Advice> {
    constructor();
    create(value?: PartialMessage<Advice>): Advice;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Advice): Advice;
    internalBinaryWrite(message: Advice, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.Advice
 */
export declare const Advice: Advice$Type;
export {};
