import { ServiceType } from "@protobuf-ts/runtime-rpc";
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";
import { Status } from "../../../rpc/status";
import { AttributeContext } from "../../../rpc/context/attribute_context";
/**
 * Request message for the Check method.
 *
 * @generated from protobuf message google.api.servicecontrol.v2.CheckRequest
 */
export interface CheckRequest {
    /**
     * The service name as specified in its service configuration. For example,
     * `"pubsub.googleapis.com"`.
     *
     * See
     * [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)
     * for the definition of a service name.
     *
     * @generated from protobuf field: string service_name = 1;
     */
    serviceName: string;
    /**
     * Specifies the version of the service configuration that should be used to
     * process the request. Must not be empty. Set this field to 'latest' to
     * specify using the latest configuration.
     *
     * @generated from protobuf field: string service_config_id = 2;
     */
    serviceConfigId: string;
    /**
     * Describes attributes about the operation being executed by the service.
     *
     * @generated from protobuf field: google.rpc.context.AttributeContext attributes = 3;
     */
    attributes?: AttributeContext;
    /**
     * Describes the resources and the policies applied to each resource.
     *
     * @generated from protobuf field: repeated google.api.servicecontrol.v2.ResourceInfo resources = 4;
     */
    resources: ResourceInfo[];
    /**
     * Optional. Contains a comma-separated list of flags.
     *
     * @generated from protobuf field: string flags = 5;
     */
    flags: string;
}
/**
 * Describes a resource referenced in the request.
 *
 * @generated from protobuf message google.api.servicecontrol.v2.ResourceInfo
 */
export interface ResourceInfo {
    /**
     * The name of the resource referenced in the request.
     *
     * @generated from protobuf field: string name = 1;
     */
    name: string;
    /**
     * The resource type in the format of "{service}/{kind}".
     *
     * @generated from protobuf field: string type = 2;
     */
    type: string;
    /**
     * The resource permission needed for this request.
     * The format must be "{service}/{plural}.{verb}".
     *
     * @generated from protobuf field: string permission = 3;
     */
    permission: string;
    /**
     * Optional. The identifier of the container of this resource. For Google
     * Cloud APIs, the resource container must be one of the following formats:
     *     - `projects/<project-id or project-number>`
     *     - `folders/<folder-id>`
     *     - `organizations/<organization-id>`
     * For the policy enforcement on the container level (VPCSC and Location
     * Policy check), this field takes precedence on the container extracted from
     * name when presents.
     *
     * @generated from protobuf field: string container = 4;
     */
    container: string;
    /**
     * Optional. The location of the resource. The value must be a valid zone,
     * region or multiregion. For example: "europe-west4" or
     * "northamerica-northeast1-a"
     *
     * @generated from protobuf field: string location = 5;
     */
    location: string;
}
/**
 * Response message for the Check method.
 *
 * @generated from protobuf message google.api.servicecontrol.v2.CheckResponse
 */
export interface CheckResponse {
    /**
     * Operation is allowed when this field is not set. Any non-'OK' status
     * indicates a denial; [google.rpc.Status.details][google.rpc.Status.details]
     * would contain additional details about the denial.
     *
     * @generated from protobuf field: google.rpc.Status status = 1;
     */
    status?: Status;
    /**
     * Returns a set of request contexts generated from the `CheckRequest`.
     *
     * @generated from protobuf field: map<string, string> headers = 2;
     */
    headers: {
        [key: string]: string;
    };
}
/**
 * Request message for the Report method.
 *
 * @generated from protobuf message google.api.servicecontrol.v2.ReportRequest
 */
export interface ReportRequest {
    /**
     * The service name as specified in its service configuration. For example,
     * `"pubsub.googleapis.com"`.
     *
     * See
     * [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)
     * for the definition of a service name.
     *
     * @generated from protobuf field: string service_name = 1;
     */
    serviceName: string;
    /**
     * Specifies the version of the service configuration that should be used to
     * process the request. Must not be empty. Set this field to 'latest' to
     * specify using the latest configuration.
     *
     * @generated from protobuf field: string service_config_id = 2;
     */
    serviceConfigId: string;
    /**
     * Describes the list of operations to be reported. Each operation is
     * represented as an AttributeContext, and contains all attributes around an
     * API access.
     *
     * @generated from protobuf field: repeated google.rpc.context.AttributeContext operations = 3;
     */
    operations: AttributeContext[];
}
/**
 * Response message for the Report method.
 * If the request contains any invalid data, the server returns an RPC error.
 *
 * @generated from protobuf message google.api.servicecontrol.v2.ReportResponse
 */
export interface ReportResponse {
}
declare class CheckRequest$Type extends MessageType<CheckRequest> {
    constructor();
    create(value?: PartialMessage<CheckRequest>): CheckRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CheckRequest): CheckRequest;
    internalBinaryWrite(message: CheckRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.servicecontrol.v2.CheckRequest
 */
export declare const CheckRequest: CheckRequest$Type;
declare class ResourceInfo$Type extends MessageType<ResourceInfo> {
    constructor();
    create(value?: PartialMessage<ResourceInfo>): ResourceInfo;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ResourceInfo): ResourceInfo;
    internalBinaryWrite(message: ResourceInfo, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.servicecontrol.v2.ResourceInfo
 */
export declare const ResourceInfo: ResourceInfo$Type;
declare class CheckResponse$Type extends MessageType<CheckResponse> {
    constructor();
    create(value?: PartialMessage<CheckResponse>): CheckResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CheckResponse): CheckResponse;
    private binaryReadMap2;
    internalBinaryWrite(message: CheckResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.servicecontrol.v2.CheckResponse
 */
export declare const CheckResponse: CheckResponse$Type;
declare class ReportRequest$Type extends MessageType<ReportRequest> {
    constructor();
    create(value?: PartialMessage<ReportRequest>): ReportRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ReportRequest): ReportRequest;
    internalBinaryWrite(message: ReportRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.servicecontrol.v2.ReportRequest
 */
export declare const ReportRequest: ReportRequest$Type;
declare class ReportResponse$Type extends MessageType<ReportResponse> {
    constructor();
    create(value?: PartialMessage<ReportResponse>): ReportResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ReportResponse): ReportResponse;
    internalBinaryWrite(message: ReportResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.servicecontrol.v2.ReportResponse
 */
export declare const ReportResponse: ReportResponse$Type;
/**
 * @generated ServiceType for protobuf service google.api.servicecontrol.v2.ServiceController
 */
export declare const ServiceController: ServiceType;
export {};
