/**
 * # Freeze Service
 * A service to manage network freeze events.
 *
 * ### 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.freeze">>> This comment is special code for setting PBJ Compiler java package

import "services_transaction_response.proto";
import "services_transaction.proto";

/**
 * A service to manage network "freeze" events.
 *
 * This service provides a facility to prepare for network upgrades, halt network processing,
 * perform network software upgrades, and automatically restart the network following an upgrade.
 */
service FreezeService {
    /**
     * Freeze, cancel, or prepare a freeze.
     * This single transaction performs all of the functions supported
     * by the network freeze service. These functions include actions to
     * prepare an upgrade, prepare a telemetry upgrade, freeze the network,
     * freeze the network for upgrade, or abort a scheduled freeze.
     * <p>
     * The actual freeze action SHALL be determined by the `freeze_type` field
     * of the `FreezeTransactionBody`.<br/>
     * The transaction body MUST be a `FreezeTransactionBody`.
     */
    rpc freeze (Transaction) returns (TransactionResponse);
}
