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 { Struct } from "../../../protobuf/struct";
import { Any } from "../../../protobuf/any";
import { HttpRequest } from "./http_request";
import { LogSeverity } from "../../../logging/type/log_severity";
import { Timestamp } from "../../../protobuf/timestamp";
/**
 * An individual log entry.
 *
 * @generated from protobuf message google.api.servicecontrol.v1.LogEntry
 */
export interface LogEntry {
    /**
     * Required. The log to which this log entry belongs. Examples: `"syslog"`,
     * `"book_log"`.
     *
     * @generated from protobuf field: string name = 10;
     */
    name: string;
    /**
     * The time the event described by the log entry occurred. If
     * omitted, defaults to operation start time.
     *
     * @generated from protobuf field: google.protobuf.Timestamp timestamp = 11;
     */
    timestamp?: Timestamp;
    /**
     * The severity of the log entry. The default value is
     * `LogSeverity.DEFAULT`.
     *
     * @generated from protobuf field: google.logging.type.LogSeverity severity = 12;
     */
    severity: LogSeverity;
    /**
     * Optional. Information about the HTTP request associated with this
     * log entry, if applicable.
     *
     * @generated from protobuf field: google.api.servicecontrol.v1.HttpRequest http_request = 14;
     */
    httpRequest?: HttpRequest;
    /**
     * Optional. Resource name of the trace associated with the log entry, if any.
     * If this field contains a relative resource name, you can assume the name is
     * relative to `//tracing.googleapis.com`. Example:
     * `projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824`
     *
     * @generated from protobuf field: string trace = 15;
     */
    trace: string;
    /**
     * A unique ID for the log entry used for deduplication. If omitted,
     * the implementation will generate one based on operation_id.
     *
     * @generated from protobuf field: string insert_id = 4;
     */
    insertId: string;
    /**
     * A set of user-defined (key, value) data that provides additional
     * information about the log entry.
     *
     * @generated from protobuf field: map<string, string> labels = 13;
     */
    labels: {
        [key: string]: string;
    };
    /**
     * @generated from protobuf oneof: payload
     */
    payload: {
        oneofKind: "protoPayload";
        /**
         * The log entry payload, represented as a protocol buffer that is
         * expressed as a JSON object. The only accepted type currently is
         * [AuditLog][google.cloud.audit.AuditLog].
         *
         * @generated from protobuf field: google.protobuf.Any proto_payload = 2;
         */
        protoPayload: Any;
    } | {
        oneofKind: "textPayload";
        /**
         * The log entry payload, represented as a Unicode string (UTF-8).
         *
         * @generated from protobuf field: string text_payload = 3;
         */
        textPayload: string;
    } | {
        oneofKind: "structPayload";
        /**
         * The log entry payload, represented as a structure that
         * is expressed as a JSON object.
         *
         * @generated from protobuf field: google.protobuf.Struct struct_payload = 6;
         */
        structPayload: Struct;
    } | {
        oneofKind: undefined;
    };
    /**
     * Optional. Information about an operation associated with the log entry, if
     * applicable.
     *
     * @generated from protobuf field: google.api.servicecontrol.v1.LogEntryOperation operation = 16;
     */
    operation?: LogEntryOperation;
    /**
     * Optional. Source code location information associated with the log entry,
     * if any.
     *
     * @generated from protobuf field: google.api.servicecontrol.v1.LogEntrySourceLocation source_location = 17;
     */
    sourceLocation?: LogEntrySourceLocation;
}
/**
 * Additional information about a potentially long-running operation with which
 * a log entry is associated.
 *
 * @generated from protobuf message google.api.servicecontrol.v1.LogEntryOperation
 */
export interface LogEntryOperation {
    /**
     * Optional. An arbitrary operation identifier. Log entries with the
     * same identifier are assumed to be part of the same operation.
     *
     * @generated from protobuf field: string id = 1;
     */
    id: string;
    /**
     * Optional. An arbitrary producer identifier. The combination of
     * `id` and `producer` must be globally unique.  Examples for `producer`:
     * `"MyDivision.MyBigCompany.com"`, `"github.com/MyProject/MyApplication"`.
     *
     * @generated from protobuf field: string producer = 2;
     */
    producer: string;
    /**
     * Optional. Set this to True if this is the first log entry in the operation.
     *
     * @generated from protobuf field: bool first = 3;
     */
    first: boolean;
    /**
     * Optional. Set this to True if this is the last log entry in the operation.
     *
     * @generated from protobuf field: bool last = 4;
     */
    last: boolean;
}
/**
 * Additional information about the source code location that produced the log
 * entry.
 *
 * @generated from protobuf message google.api.servicecontrol.v1.LogEntrySourceLocation
 */
export interface LogEntrySourceLocation {
    /**
     * Optional. Source file name. Depending on the runtime environment, this
     * might be a simple name or a fully-qualified name.
     *
     * @generated from protobuf field: string file = 1;
     */
    file: string;
    /**
     * Optional. Line within the source file. 1-based; 0 indicates no line number
     * available.
     *
     * @generated from protobuf field: int64 line = 2;
     */
    line: bigint;
    /**
     * Optional. Human-readable name of the function or method being invoked, with
     * optional context such as the class or package name. This information may be
     * used in contexts such as the logs viewer, where a file and line number are
     * less meaningful. The format can vary by language. For example:
     * `qual.if.ied.Class.method` (Java), `dir/package.func` (Go), `function`
     * (Python).
     *
     * @generated from protobuf field: string function = 3;
     */
    function: string;
}
declare class LogEntry$Type extends MessageType<LogEntry> {
    constructor();
    create(value?: PartialMessage<LogEntry>): LogEntry;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: LogEntry): LogEntry;
    private binaryReadMap13;
    internalBinaryWrite(message: LogEntry, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.servicecontrol.v1.LogEntry
 */
export declare const LogEntry: LogEntry$Type;
declare class LogEntryOperation$Type extends MessageType<LogEntryOperation> {
    constructor();
    create(value?: PartialMessage<LogEntryOperation>): LogEntryOperation;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: LogEntryOperation): LogEntryOperation;
    internalBinaryWrite(message: LogEntryOperation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.servicecontrol.v1.LogEntryOperation
 */
export declare const LogEntryOperation: LogEntryOperation$Type;
declare class LogEntrySourceLocation$Type extends MessageType<LogEntrySourceLocation> {
    constructor();
    create(value?: PartialMessage<LogEntrySourceLocation>): LogEntrySourceLocation;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: LogEntrySourceLocation): LogEntrySourceLocation;
    internalBinaryWrite(message: LogEntrySourceLocation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.servicecontrol.v1.LogEntrySourceLocation
 */
export declare const LogEntrySourceLocation: LogEntrySourceLocation$Type;
export {};
