code: def pack_balance_proof(
          nonce: Nonce,
          balance_hash: BalanceHash,
          additional_hash: AdditionalHash,
          canonical_identifier: CanonicalIdentifier,
          msg_type: MessageTypeId = MessageTypeId.BALANCE_PROOF,
  ) -> bytes:
      
      return pack_data([
          'address',
          'uint256',
          'uint256',
          'uint256',
          'bytes32',
          'uint256',
          'bytes32',
      ], [
          canonical_identifier.token_network_address,
          canonical_identifier.chain_identifier,
          msg_type,
          canonical_identifier.channel_identifier,
          balance_hash,
          nonce,
          additional_hash,
      ])
docs: Packs balance proof data to be signed
  
      Packs the given arguments in a byte array in the same configuration the
      contracts expect the signed data to have.