import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import type { Duration } from "@bufbuild/protobuf/wkt";
import type { Message } from "@bufbuild/protobuf";
/**
 * Describes the file google/rpc/error_details.proto.
 */
export declare const file_google_rpc_error_details: GenFile;
/**
 * Describes the cause of the error with structured details.
 *
 * Example of an error when contacting the "pubsub.googleapis.com" API when it
 * is not enabled:
 *
 *     { "reason": "API_DISABLED"
 *       "domain": "googleapis.com"
 *       "metadata": {
 *         "resource": "projects/123",
 *         "service": "pubsub.googleapis.com"
 *       }
 *     }
 *
 * This response indicates that the pubsub.googleapis.com API is not enabled.
 *
 * Example of an error that is returned when attempting to create a Spanner
 * instance in a region that is out of stock:
 *
 *     { "reason": "STOCKOUT"
 *       "domain": "spanner.googleapis.com",
 *       "metadata": {
 *         "availableRegions": "us-central1,us-east2"
 *       }
 *     }
 *
 * @generated from message google.rpc.ErrorInfo
 */
export type ErrorInfo = Message<"google.rpc.ErrorInfo"> & {
    /**
     * The reason of the error. This is a constant value that identifies the
     * proximate cause of the error. Error reasons are unique within a particular
     * domain of errors. This should be at most 63 characters and match a
     * regular expression of `[A-Z][A-Z0-9_]+[A-Z0-9]`, which represents
     * UPPER_SNAKE_CASE.
     *
     * @generated from field: string reason = 1;
     */
    reason: string;
    /**
     * The logical grouping to which the "reason" belongs. The error domain
     * is typically the registered service name of the tool or product that
     * generates the error. Example: "pubsub.googleapis.com". If the error is
     * generated by some common infrastructure, the error domain must be a
     * globally unique value that identifies the infrastructure. For Google API
     * infrastructure, the error domain is "googleapis.com".
     *
     * @generated from field: string domain = 2;
     */
    domain: string;
    /**
     * Additional structured details about this error.
     *
     * Keys must match a regular expression of `[a-z][a-zA-Z0-9-_]+` but should
     * ideally be lowerCamelCase. Also, they must be limited to 64 characters in
     * length. When identifying the current value of an exceeded limit, the units
     * should be contained in the key, not the value.  For example, rather than
     * `{"instanceLimit": "100/request"}`, should be returned as,
     * `{"instanceLimitPerRequest": "100"}`, if the client exceeds the number of
     * instances that can be created in a single (batch) request.
     *
     * @generated from field: map<string, string> metadata = 3;
     */
    metadata: {
        [key: string]: string;
    };
};
/**
 * Describes the message google.rpc.ErrorInfo.
 * Use `create(ErrorInfoSchema)` to create a new message.
 */
export declare const ErrorInfoSchema: GenMessage<ErrorInfo>;
/**
 * Describes when the clients can retry a failed request. Clients could ignore
 * the recommendation here or retry when this information is missing from error
 * responses.
 *
 * It's always recommended that clients should use exponential backoff when
 * retrying.
 *
 * Clients should wait until `retry_delay` amount of time has passed since
 * receiving the error response before retrying.  If retrying requests also
 * fail, clients should use an exponential backoff scheme to gradually increase
 * the delay between retries based on `retry_delay`, until either a maximum
 * number of retries have been reached or a maximum retry delay cap has been
 * reached.
 *
 * @generated from message google.rpc.RetryInfo
 */
export type RetryInfo = Message<"google.rpc.RetryInfo"> & {
    /**
     * Clients should wait at least this long between retrying the same request.
     *
     * @generated from field: google.protobuf.Duration retry_delay = 1;
     */
    retryDelay?: Duration;
};
/**
 * Describes the message google.rpc.RetryInfo.
 * Use `create(RetryInfoSchema)` to create a new message.
 */
export declare const RetryInfoSchema: GenMessage<RetryInfo>;
/**
 * Describes additional debugging info.
 *
 * @generated from message google.rpc.DebugInfo
 */
export type DebugInfo = Message<"google.rpc.DebugInfo"> & {
    /**
     * The stack trace entries indicating where the error occurred.
     *
     * @generated from field: repeated string stack_entries = 1;
     */
    stackEntries: string[];
    /**
     * Additional debugging information provided by the server.
     *
     * @generated from field: string detail = 2;
     */
    detail: string;
};
/**
 * Describes the message google.rpc.DebugInfo.
 * Use `create(DebugInfoSchema)` to create a new message.
 */
export declare const DebugInfoSchema: GenMessage<DebugInfo>;
/**
 * Describes how a quota check failed.
 *
 * For example if a daily limit was exceeded for the calling project,
 * a service could respond with a QuotaFailure detail containing the project
 * id and the description of the quota limit that was exceeded.  If the
 * calling project hasn't enabled the service in the developer console, then
 * a service could respond with the project id and set `service_disabled`
 * to true.
 *
 * Also see RetryInfo and Help types for other details about handling a
 * quota failure.
 *
 * @generated from message google.rpc.QuotaFailure
 */
export type QuotaFailure = Message<"google.rpc.QuotaFailure"> & {
    /**
     * Describes all quota violations.
     *
     * @generated from field: repeated google.rpc.QuotaFailure.Violation violations = 1;
     */
    violations: QuotaFailure_Violation[];
};
/**
 * Describes the message google.rpc.QuotaFailure.
 * Use `create(QuotaFailureSchema)` to create a new message.
 */
export declare const QuotaFailureSchema: GenMessage<QuotaFailure>;
/**
 * A message type used to describe a single quota violation.  For example, a
 * daily quota or a custom quota that was exceeded.
 *
 * @generated from message google.rpc.QuotaFailure.Violation
 */
export type QuotaFailure_Violation = Message<"google.rpc.QuotaFailure.Violation"> & {
    /**
     * The subject on which the quota check failed.
     * For example, "clientip:<ip address of client>" or "project:<Google
     * developer project id>".
     *
     * @generated from field: string subject = 1;
     */
    subject: string;
    /**
     * A description of how the quota check failed. Clients can use this
     * description to find more about the quota configuration in the service's
     * public documentation, or find the relevant quota limit to adjust through
     * developer console.
     *
     * For example: "Service disabled" or "Daily Limit for read operations
     * exceeded".
     *
     * @generated from field: string description = 2;
     */
    description: string;
    /**
     * The API Service from which the `QuotaFailure.Violation` orginates. In
     * some cases, Quota issues originate from an API Service other than the one
     * that was called. In other words, a dependency of the called API Service
     * could be the cause of the `QuotaFailure`, and this field would have the
     * dependency API service name.
     *
     * For example, if the called API is Kubernetes Engine API
     * (container.googleapis.com), and a quota violation occurs in the
     * Kubernetes Engine API itself, this field would be
     * "container.googleapis.com". On the other hand, if the quota violation
     * occurs when the Kubernetes Engine API creates VMs in the Compute Engine
     * API (compute.googleapis.com), this field would be
     * "compute.googleapis.com".
     *
     * @generated from field: string api_service = 3;
     */
    apiService: string;
    /**
     * The metric of the violated quota. A quota metric is a named counter to
     * measure usage, such as API requests or CPUs. When an activity occurs in a
     * service, such as Virtual Machine allocation, one or more quota metrics
     * may be affected.
     *
     * For example, "compute.googleapis.com/cpus_per_vm_family",
     * "storage.googleapis.com/internet_egress_bandwidth".
     *
     * @generated from field: string quota_metric = 4;
     */
    quotaMetric: string;
    /**
     * The id of the violated quota. Also know as "limit name", this is the
     * unique identifier of a quota in the context of an API service.
     *
     * For example, "CPUS-PER-VM-FAMILY-per-project-region".
     *
     * @generated from field: string quota_id = 5;
     */
    quotaId: string;
    /**
     * The dimensions of the violated quota. Every non-global quota is enforced
     * on a set of dimensions. While quota metric defines what to count, the
     * dimensions specify for what aspects the counter should be increased.
     *
     * For example, the quota "CPUs per region per VM family" enforces a limit
     * on the metric "compute.googleapis.com/cpus_per_vm_family" on dimensions
     * "region" and "vm_family". And if the violation occurred in region
     * "us-central1" and for VM family "n1", the quota_dimensions would be,
     *
     * {
     *   "region": "us-central1",
     *   "vm_family": "n1",
     * }
     *
     * When a quota is enforced globally, the quota_dimensions would always be
     * empty.
     *
     * @generated from field: map<string, string> quota_dimensions = 6;
     */
    quotaDimensions: {
        [key: string]: string;
    };
    /**
     * The enforced quota value at the time of the `QuotaFailure`.
     *
     * For example, if the enforced quota value at the time of the
     * `QuotaFailure` on the number of CPUs is "10", then the value of this
     * field would reflect this quantity.
     *
     * @generated from field: int64 quota_value = 7;
     */
    quotaValue: bigint;
    /**
     * The new quota value being rolled out at the time of the violation. At the
     * completion of the rollout, this value will be enforced in place of
     * quota_value. If no rollout is in progress at the time of the violation,
     * this field is not set.
     *
     * For example, if at the time of the violation a rollout is in progress
     * changing the number of CPUs quota from 10 to 20, 20 would be the value of
     * this field.
     *
     * @generated from field: optional int64 future_quota_value = 8;
     */
    futureQuotaValue?: bigint;
};
/**
 * Describes the message google.rpc.QuotaFailure.Violation.
 * Use `create(QuotaFailure_ViolationSchema)` to create a new message.
 */
export declare const QuotaFailure_ViolationSchema: GenMessage<QuotaFailure_Violation>;
/**
 * Describes what preconditions have failed.
 *
 * For example, if an RPC failed because it required the Terms of Service to be
 * acknowledged, it could list the terms of service violation in the
 * PreconditionFailure message.
 *
 * @generated from message google.rpc.PreconditionFailure
 */
export type PreconditionFailure = Message<"google.rpc.PreconditionFailure"> & {
    /**
     * Describes all precondition violations.
     *
     * @generated from field: repeated google.rpc.PreconditionFailure.Violation violations = 1;
     */
    violations: PreconditionFailure_Violation[];
};
/**
 * Describes the message google.rpc.PreconditionFailure.
 * Use `create(PreconditionFailureSchema)` to create a new message.
 */
export declare const PreconditionFailureSchema: GenMessage<PreconditionFailure>;
/**
 * A message type used to describe a single precondition failure.
 *
 * @generated from message google.rpc.PreconditionFailure.Violation
 */
export type PreconditionFailure_Violation = Message<"google.rpc.PreconditionFailure.Violation"> & {
    /**
     * The type of PreconditionFailure. We recommend using a service-specific
     * enum type to define the supported precondition violation subjects. For
     * example, "TOS" for "Terms of Service violation".
     *
     * @generated from field: string type = 1;
     */
    type: string;
    /**
     * The subject, relative to the type, that failed.
     * For example, "google.com/cloud" relative to the "TOS" type would indicate
     * which terms of service is being referenced.
     *
     * @generated from field: string subject = 2;
     */
    subject: string;
    /**
     * A description of how the precondition failed. Developers can use this
     * description to understand how to fix the failure.
     *
     * For example: "Terms of service not accepted".
     *
     * @generated from field: string description = 3;
     */
    description: string;
};
/**
 * Describes the message google.rpc.PreconditionFailure.Violation.
 * Use `create(PreconditionFailure_ViolationSchema)` to create a new message.
 */
export declare const PreconditionFailure_ViolationSchema: GenMessage<PreconditionFailure_Violation>;
/**
 * Describes violations in a client request. This error type focuses on the
 * syntactic aspects of the request.
 *
 * @generated from message google.rpc.BadRequest
 */
export type BadRequest = Message<"google.rpc.BadRequest"> & {
    /**
     * Describes all violations in a client request.
     *
     * @generated from field: repeated google.rpc.BadRequest.FieldViolation field_violations = 1;
     */
    fieldViolations: BadRequest_FieldViolation[];
};
/**
 * Describes the message google.rpc.BadRequest.
 * Use `create(BadRequestSchema)` to create a new message.
 */
export declare const BadRequestSchema: GenMessage<BadRequest>;
/**
 * A message type used to describe a single bad request field.
 *
 * @generated from message google.rpc.BadRequest.FieldViolation
 */
export type BadRequest_FieldViolation = Message<"google.rpc.BadRequest.FieldViolation"> & {
    /**
     * A path that leads to a field in the request body. The value will be a
     * sequence of dot-separated identifiers that identify a protocol buffer
     * field.
     *
     * Consider the following:
     *
     *     message CreateContactRequest {
     *       message EmailAddress {
     *         enum Type {
     *           TYPE_UNSPECIFIED = 0;
     *           HOME = 1;
     *           WORK = 2;
     *         }
     *
     *         optional string email = 1;
     *         repeated EmailType type = 2;
     *       }
     *
     *       string full_name = 1;
     *       repeated EmailAddress email_addresses = 2;
     *     }
     *
     * In this example, in proto `field` could take one of the following values:
     *
     * * `full_name` for a violation in the `full_name` value
     * * `email_addresses[1].email` for a violation in the `email` field of the
     *   first `email_addresses` message
     * * `email_addresses[3].type[2]` for a violation in the second `type`
     *   value in the third `email_addresses` message.
     *
     * In JSON, the same values are represented as:
     *
     * * `fullName` for a violation in the `fullName` value
     * * `emailAddresses[1].email` for a violation in the `email` field of the
     *   first `emailAddresses` message
     * * `emailAddresses[3].type[2]` for a violation in the second `type`
     *   value in the third `emailAddresses` message.
     *
     * @generated from field: string field = 1;
     */
    field: string;
    /**
     * A description of why the request element is bad.
     *
     * @generated from field: string description = 2;
     */
    description: string;
    /**
     * The reason of the field-level error. This is a constant value that
     * identifies the proximate cause of the field-level error. It should
     * uniquely identify the type of the FieldViolation within the scope of the
     * google.rpc.ErrorInfo.domain. This should be at most 63
     * characters and match a regular expression of `[A-Z][A-Z0-9_]+[A-Z0-9]`,
     * which represents UPPER_SNAKE_CASE.
     *
     * @generated from field: string reason = 3;
     */
    reason: string;
    /**
     * Provides a localized error message for field-level errors that is safe to
     * return to the API consumer.
     *
     * @generated from field: google.rpc.LocalizedMessage localized_message = 4;
     */
    localizedMessage?: LocalizedMessage;
};
/**
 * Describes the message google.rpc.BadRequest.FieldViolation.
 * Use `create(BadRequest_FieldViolationSchema)` to create a new message.
 */
export declare const BadRequest_FieldViolationSchema: GenMessage<BadRequest_FieldViolation>;
/**
 * Contains metadata about the request that clients can attach when filing a bug
 * or providing other forms of feedback.
 *
 * @generated from message google.rpc.RequestInfo
 */
export type RequestInfo = Message<"google.rpc.RequestInfo"> & {
    /**
     * An opaque string that should only be interpreted by the service generating
     * it. For example, it can be used to identify requests in the service's logs.
     *
     * @generated from field: string request_id = 1;
     */
    requestId: string;
    /**
     * Any data that was used to serve this request. For example, an encrypted
     * stack trace that can be sent back to the service provider for debugging.
     *
     * @generated from field: string serving_data = 2;
     */
    servingData: string;
};
/**
 * Describes the message google.rpc.RequestInfo.
 * Use `create(RequestInfoSchema)` to create a new message.
 */
export declare const RequestInfoSchema: GenMessage<RequestInfo>;
/**
 * Describes the resource that is being accessed.
 *
 * @generated from message google.rpc.ResourceInfo
 */
export type ResourceInfo = Message<"google.rpc.ResourceInfo"> & {
    /**
     * A name for the type of resource being accessed, e.g. "sql table",
     * "cloud storage bucket", "file", "Google calendar"; or the type URL
     * of the resource: e.g. "type.googleapis.com/google.pubsub.v1.Topic".
     *
     * @generated from field: string resource_type = 1;
     */
    resourceType: string;
    /**
     * The name of the resource being accessed.  For example, a shared calendar
     * name: "example.com_4fghdhgsrgh@group.calendar.google.com", if the current
     * error is
     * [google.rpc.Code.PERMISSION_DENIED][google.rpc.Code.PERMISSION_DENIED].
     *
     * @generated from field: string resource_name = 2;
     */
    resourceName: string;
    /**
     * The owner of the resource (optional).
     * For example, "user:<owner email>" or "project:<Google developer project
     * id>".
     *
     * @generated from field: string owner = 3;
     */
    owner: string;
    /**
     * Describes what error is encountered when accessing this resource.
     * For example, updating a cloud project may require the `writer` permission
     * on the developer console project.
     *
     * @generated from field: string description = 4;
     */
    description: string;
};
/**
 * Describes the message google.rpc.ResourceInfo.
 * Use `create(ResourceInfoSchema)` to create a new message.
 */
export declare const ResourceInfoSchema: GenMessage<ResourceInfo>;
/**
 * Provides links to documentation or for performing an out of band action.
 *
 * For example, if a quota check failed with an error indicating the calling
 * project hasn't enabled the accessed service, this can contain a URL pointing
 * directly to the right place in the developer console to flip the bit.
 *
 * @generated from message google.rpc.Help
 */
export type Help = Message<"google.rpc.Help"> & {
    /**
     * URL(s) pointing to additional information on handling the current error.
     *
     * @generated from field: repeated google.rpc.Help.Link links = 1;
     */
    links: Help_Link[];
};
/**
 * Describes the message google.rpc.Help.
 * Use `create(HelpSchema)` to create a new message.
 */
export declare const HelpSchema: GenMessage<Help>;
/**
 * Describes a URL link.
 *
 * @generated from message google.rpc.Help.Link
 */
export type Help_Link = Message<"google.rpc.Help.Link"> & {
    /**
     * Describes what the link offers.
     *
     * @generated from field: string description = 1;
     */
    description: string;
    /**
     * The URL of the link.
     *
     * @generated from field: string url = 2;
     */
    url: string;
};
/**
 * Describes the message google.rpc.Help.Link.
 * Use `create(Help_LinkSchema)` to create a new message.
 */
export declare const Help_LinkSchema: GenMessage<Help_Link>;
/**
 * Provides a localized error message that is safe to return to the user
 * which can be attached to an RPC error.
 *
 * @generated from message google.rpc.LocalizedMessage
 */
export type LocalizedMessage = Message<"google.rpc.LocalizedMessage"> & {
    /**
     * The locale used following the specification defined at
     * https://www.rfc-editor.org/rfc/bcp/bcp47.txt.
     * Examples are: "en-US", "fr-CH", "es-MX"
     *
     * @generated from field: string locale = 1;
     */
    locale: string;
    /**
     * The localized error message in the above locale.
     *
     * @generated from field: string message = 2;
     */
    message: string;
};
/**
 * Describes the message google.rpc.LocalizedMessage.
 * Use `create(LocalizedMessageSchema)` to create a new message.
 */
export declare const LocalizedMessageSchema: GenMessage<LocalizedMessage>;
