/**
 * # Network Service
 * This service offers some basic "network information" queries.
 *
 * ### 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.service.proto.java";
// <<<pbj.java_package = "com.hedera.hapi.node.network">>> This comment is special code for setting PBJ Compiler java package

import "services_query.proto";
import "services_response.proto";
import "services_transaction_response.proto";
import "services_transaction.proto";

/**
 * Basic "network information" queries.
 *
 * This service supports queries for the active services and API versions,
 * and a query for account details.
 */
service NetworkService {
    /**
     * Retrieve the active versions of Hedera Services and API messages.
     */
    rpc getVersionInfo (Query) returns (Response);

    /**
     * Request detail information about an account.
     * <p>
     * The returned information SHALL include balance and allowances.<br/>
     * The returned information SHALL NOT include a list of account records.
     */
    rpc getAccountDetails (Query) returns (Response);

    /**
     * Retrieve the time, in nanoseconds, spent in direct processing for one or
     * more recent transactions.
     * <p>
     * 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 (that is, excluding time to reach consensus).<br/>
     * Note that because each node processes every transaction for the Hedera
     * network, this query MAY be sent to any node.
     * <p>
     * <blockquote>Important<blockquote>
     * This query is obsolete, not supported, and SHALL fail with a pre-check
     * result of `NOT_SUPPORTED`.</blockquote></blockquote>
     */
    rpc getExecutionTime (Query) returns (Response) {option deprecated = true;};

    /**
     * Submit a transaction that wraps another transaction which will
     * skip most validation.
     * <p>
     * <blockquote>Important<blockquote>
     * This query is obsolete, not supported, and SHALL fail with a pre-check
     * result of `NOT_SUPPORTED`.
     * </blockquote></blockquote>
     */
    rpc uncheckedSubmit (Transaction) returns (TransactionResponse) {option deprecated = true;};
}
