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 { Monitoring } from "../../monitoring";
import { MonitoredResourceDescriptor } from "../../monitored_resource";
import { Endpoint } from "../../endpoint";
import { Usage } from "../../usage";
import { Authentication } from "../../auth";
import { Quota } from "../../quota";
import { Documentation } from "../../documentation";
import { Api } from "../../../protobuf/api";
/**
 * A service that is available for use by the consumer.
 *
 * @generated from protobuf message google.api.serviceusage.v1.Service
 */
export interface Service {
    /**
     * The resource name of the consumer and service.
     *
     * A valid name would be:
     * - projects/123/services/serviceusage.googleapis.com
     *
     * @generated from protobuf field: string name = 1;
     */
    name: string;
    /**
     * The resource name of the consumer.
     *
     * A valid name would be:
     * - projects/123
     *
     * @generated from protobuf field: string parent = 5;
     */
    parent: string;
    /**
     * The service configuration of the available service.
     * Some fields may be filtered out of the configuration in responses to
     * the `ListServices` method. These fields are present only in responses to
     * the `GetService` method.
     *
     * @generated from protobuf field: google.api.serviceusage.v1.ServiceConfig config = 2;
     */
    config?: ServiceConfig;
    /**
     * Whether or not the service has been enabled for use by the consumer.
     *
     * @generated from protobuf field: google.api.serviceusage.v1.State state = 4;
     */
    state: State;
}
/**
 * The configuration of the service.
 *
 * @generated from protobuf message google.api.serviceusage.v1.ServiceConfig
 */
export interface ServiceConfig {
    /**
     * The DNS address at which this service is available.
     *
     * An example DNS address would be:
     * `calendar.googleapis.com`.
     *
     * @generated from protobuf field: string name = 1;
     */
    name: string;
    /**
     * The product title for this service.
     *
     * @generated from protobuf field: string title = 2;
     */
    title: string;
    /**
     * A list of API interfaces exported by this service. Contains only the names,
     * versions, and method names of the interfaces.
     *
     * @generated from protobuf field: repeated google.protobuf.Api apis = 3;
     */
    apis: Api[];
    /**
     * Additional API documentation. Contains only the summary and the
     * documentation URL.
     *
     * @generated from protobuf field: google.api.Documentation documentation = 6;
     */
    documentation?: Documentation;
    /**
     * Quota configuration.
     *
     * @generated from protobuf field: google.api.Quota quota = 10;
     */
    quota?: Quota;
    /**
     * Auth configuration. Contains only the OAuth rules.
     *
     * @generated from protobuf field: google.api.Authentication authentication = 11;
     */
    authentication?: Authentication;
    /**
     * Configuration controlling usage of this service.
     *
     * @generated from protobuf field: google.api.Usage usage = 15;
     */
    usage?: Usage;
    /**
     * Configuration for network endpoints. Contains only the names and aliases
     * of the endpoints.
     *
     * @generated from protobuf field: repeated google.api.Endpoint endpoints = 18;
     */
    endpoints: Endpoint[];
    /**
     * Defines the monitored resources used by this service. This is required
     * by the [Service.monitoring][google.api.Service.monitoring] and [Service.logging][google.api.Service.logging] configurations.
     *
     * @generated from protobuf field: repeated google.api.MonitoredResourceDescriptor monitored_resources = 25;
     */
    monitoredResources: MonitoredResourceDescriptor[];
    /**
     * Monitoring configuration.
     * This should not include the 'producer_destinations' field.
     *
     * @generated from protobuf field: google.api.Monitoring monitoring = 28;
     */
    monitoring?: Monitoring;
}
/**
 * The operation metadata returned for the batchend services operation.
 *
 * @generated from protobuf message google.api.serviceusage.v1.OperationMetadata
 */
export interface OperationMetadata {
    /**
     * The full name of the resources that this operation is directly
     * associated with.
     *
     * @generated from protobuf field: repeated string resource_names = 2;
     */
    resourceNames: string[];
}
/**
 * Whether or not a service has been enabled for use by a consumer.
 *
 * @generated from protobuf enum google.api.serviceusage.v1.State
 */
export declare enum State {
    /**
     * The default value, which indicates that the enabled state of the service
     * is unspecified or not meaningful. Currently, all consumers other than
     * projects (such as folders and organizations) are always in this state.
     *
     * @generated from protobuf enum value: STATE_UNSPECIFIED = 0;
     */
    STATE_UNSPECIFIED = 0,
    /**
     * The service cannot be used by this consumer. It has either been explicitly
     * disabled, or has never been enabled.
     *
     * @generated from protobuf enum value: DISABLED = 1;
     */
    DISABLED = 1,
    /**
     * The service has been explicitly enabled for use by this consumer.
     *
     * @generated from protobuf enum value: ENABLED = 2;
     */
    ENABLED = 2
}
declare class Service$Type extends MessageType<Service> {
    constructor();
    create(value?: PartialMessage<Service>): Service;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Service): Service;
    internalBinaryWrite(message: Service, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.serviceusage.v1.Service
 */
export declare const Service: Service$Type;
declare class ServiceConfig$Type extends MessageType<ServiceConfig> {
    constructor();
    create(value?: PartialMessage<ServiceConfig>): ServiceConfig;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ServiceConfig): ServiceConfig;
    internalBinaryWrite(message: ServiceConfig, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.serviceusage.v1.ServiceConfig
 */
export declare const ServiceConfig: ServiceConfig$Type;
declare class OperationMetadata$Type extends MessageType<OperationMetadata> {
    constructor();
    create(value?: PartialMessage<OperationMetadata>): OperationMetadata;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: OperationMetadata): OperationMetadata;
    internalBinaryWrite(message: OperationMetadata, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.serviceusage.v1.OperationMetadata
 */
export declare const OperationMetadata: OperationMetadata$Type;
export {};
