/**
 * # Get Execution Time
 * Given a list of transaction identifiers, return the time required to
 * process each transaction, excluding pre-consensus processing, consensus,
 * and post-processing (e.g. record stream generation).
 *
 * > Important
 * >> This query is obsolete and not supported.<br/>
 * >> Any query of this type that is submitted SHALL fail with a `PRE_CHECK`
 * >> result of `NOT_SUPPORTED`.
 *
 * ### Keywords
 * The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
 * "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
 * document are to be interpreted as described in
 * [RFC2119](https://www.ietf.org/rfc/rfc2119) and clarified in
 * [RFC8174](https://www.ietf.org/rfc/rfc8174).
 */
syntax = "proto3";

package proto;

// SPDX-License-Identifier: Apache-2.0
option java_package = "com.hederahashgraph.api.proto.java";
// <<<pbj.java_package = "com.hedera.hapi.node.network">>> This comment is special code for setting PBJ Compiler java package
option java_multiple_files = true;

import "services_basic_types.proto";
import "services_query_header.proto";
import "services_response_header.proto";

/**
 * Retrieve the time, in nanoseconds, spent in direct processing for one
 * or more recent transactions.
 *
 * For each transaction identifier provided, if that transaction is
 * sufficiently recent (that is, it is within the range of the configuration
 * value `stats.executionTimesToTrack`), the node SHALL return the time, in
 * nanoseconds, spent to directly process that transaction.<br/>
 * This time will generally correspond to the time spent in a `handle` call
 * within the workflow.
 *
 * Note that because each node processes every transaction for the Hedera
 * network, this query MAY be sent to any node, and results MAY be different
 * between different nodes.
 *
 */
message NetworkGetExecutionTimeQuery {
    option deprecated = true;
    /**
     * Standard information sent with every query operation.<br/>
     * This includes the signed payment and what kind of response is requested
     * (cost, state proof, both, or neither).
     */
    QueryHeader header = 1;

    /**
     * A list of transaction identifiers to query.
     * <p>
     * All of the queried transaction identifiers MUST have execution time
     * available. If any identifier does not have available execution time,
     * the query SHALL fail with an `INVALID_TRANSACTION_ID` response.
     */
    repeated TransactionID transaction_ids = 2;
}

/**
 * A response to a `networkGetExecutionTime` query.
 */
message NetworkGetExecutionTimeResponse {
    option deprecated = true;
    /**
     * The standard response information for queries.<br/>
     * This includes the values requested in the `QueryHeader`
     * (cost, state proof, both, or neither).
     */
    ResponseHeader header = 1;

    /**
     * A list of execution times, in nanoseconds.
     * <p>
     * This list SHALL be in the same order as the transaction
     * identifiers were presented in the query.
     */
    repeated uint64 execution_times = 2;
}
