- release_tracks: [ALPHA]
  help_text:
    brief: |
      Create a Blockchain Node Engine node.
    description: |
      Create a new Blockchain Node Engine node with the given name and configurations.

      If run asynchronously with `--async`, exits after printing
      one operation name that can be used to poll the status of the
      creation via:

        {top_command} operations describe
    examples: |
      To create a Blockchain Node Engine node with the name `my-node` in location
      `us-central`, run:

          $ {command} my-node --location=us-central1

  request:
    ALPHA:
      api_version: v1
    collection: blockchainnodeengine.projects.locations.blockchainNodes

  arguments:
    resource:
      help_text: |
        Arguments and flags that specify the Blockchain Node Engine node
        you want to create.
      spec: !REF googlecloudsdk.command_lib.blockchain_node_engine.resources:node
    params:
    - arg_name: blockchain-type
      api_field: blockchainNode.blockchainType
      default: ETHEREUM
      help_text: |
        Blockchain type the node will connect run on.
      choices:
      - arg_value: ethereum
        enum_value: ETHEREUM
        help_text:  |
          Ethereum blockchain.
    - arg_name: network
      api_field: blockchainNode.ethereumDetails.network
      default: MAINNET
      help_text: |
        Blockchain network the node will connect to.
      choices:
      - arg_value: mainnet
        enum_value: MAINNET
        help_text:  |
          Primary Ethereum network, often referred to as mainnet.
      - arg_value: goerli
        enum_value: TESTNET_GOERLI_PRATER
        help_text:  |
          Goerli & Prater Ethereum test network.
      - arg_value: holesky
        enum_value: TESTNET_HOLESKY
        help_text:  |
          Holesky Ethereum test network.
      - arg_value: sepolia
        enum_value: TESTNET_SEPOLIA
        help_text:  |
          Sepolia Ethereum test network.
    - arg_name: node-type
      api_field: blockchainNode.ethereumDetails.nodeType
      default: FULL
      help_text: |
        Node type - defines whether the node retains only recent data or an archival history.
      choices:
      - arg_value: full
        enum_value: FULL
        help_text:  |
          Node retains full history required for consensus validation, however does not retain
          archival data beyond that.
    - arg_name: consensus-client
      api_field: blockchainNode.ethereumDetails.consensusClient
      default: LIGHTHOUSE
      help_text: |
        Consensus client for Ethereum nodes.
      choices:
      - arg_value: lighthouse
        enum_value: LIGHTHOUSE
        help_text:  |
          Lighthouse execution client.
    - arg_name: execution-client
      api_field: blockchainNode.ethereumDetails.executionClient
      default: GETH
      help_text: |
        Execution client for Ethereum nodes.
      choices:
      - arg_value: geth
        enum_value: GETH
        help_text:  |
          Geth execution client.

  async:
    collection: blockchainnodeengine.projects.locations.operations
    request_issued_message: |-
      Create request issued for blockchain node [{__name__}].
