/**
 * # File Delete
 * A message for a transaction to delete a file.
 *
 * ### 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.file">>> This comment is special code for setting PBJ Compiler java package
option java_multiple_files = true;

import "services_basic_types.proto";

/**
 * Mark a file as deleted and remove its content from network state.
 *
 * The metadata for a deleted file SHALL be retained at least until the
 * expiration time for the file is exceeded.<br/>
 * On completion, the identified file SHALL be marked `deleted`.<br/>
 * On completion, the identified file SHALL have an empty `contents` array.<br/>
 * This transaction SHALL be final and irreversible.<br/>
 *
 * #### Signature Requirements
 * At least _one_ key from the `KeyList` in the `keys` field of the
 * identified file MUST sign this transaction.<br/>
 * If the keys field for the identified file is an empty `KeyList` (because that
 * file was previously created or updated to have an empty `KeyList`), then the
 * file is considered immutable and this message SHALL fail as UNAUTHORIZED.
 * See the [File Service](#FileService) specification for a detailed
 * explanation of the signature requirements for all file transactions.
 *
 * ### What is a "system" file
 * A "system" file is any file with a file number less than or equal to the
 * current configuration value for `ledger.numReservedSystemEntities`,
 * typically `750`.
 *
 * ### Block Stream Effects
 * None
 */
message FileDeleteTransactionBody {
    /**
     * A file identifier.<br/>
     * This identifies the file to delete.
     * <p>
     * The identified file MUST NOT be a "system" file.<br/>
     * This field is REQUIRED.
     */
    FileID fileID = 2;
}
