Metadata-Version: 2.1
Name: pantos-client-cli
Version: 1.1.2
Summary: Client CLI for engaging with the Pantos system
License: GPL-3.0-only
Author: Pantos GmbH
Author-email: contact@pantos.io
Requires-Python: >=3.10,<4.0
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: pantos-common (==2.1.2) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: pantos-client-library (==1.1.4) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: cerberus (==1.3.4) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: pyyaml (==6.0.1) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: requests (==2.32.3) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: web3 (==6.5.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: pyaml-env (==1.2.1) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: python-dotenv (==1.0.1) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: aiohttp (==3.9.5) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: aiosignal (==1.3.1) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: amqp (==5.2.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: aniso8601 (==9.0.1) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: annotated-types (==0.7.0) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: async-timeout (==4.0.3) ; python_version >= "3.10" and python_version < "3.11"
Requires-Dist: attrs (==23.2.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: billiard (==4.2.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: bitarray (==2.9.2) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: blinker (==1.8.2) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: celery (==5.3.1) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: certifi (==2024.7.4) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: charset-normalizer (==3.3.2) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: ckzg (==1.0.2) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: click (==8.1.7) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: click-didyoumean (==0.3.1) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: click-plugins (==1.1.1) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: click-repl (==0.3.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: colorama (==0.4.6) ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Windows"
Requires-Dist: cytoolz (==0.12.3) ; python_version >= "3.10" and python_version < "4" and implementation_name == "cpython"
Requires-Dist: eth-abi (==5.1.0) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: eth-account (==0.13.0) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: eth-hash (==0.7.0) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: eth-keyfile (==0.8.1) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: eth-keys (==0.4.0) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: eth-rlp (==2.1.0) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: eth-typing (==3.5.2) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: eth-utils (==2.3.1) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: flask (==3.0.3) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: flask-restful (==0.3.10) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: frozenlist (==1.4.1) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: hexbytes (==1.2.1) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: idna (==3.7) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: itsdangerous (==2.2.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: jinja2 (==3.1.4) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: json-log-formatter (==0.5.2) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: jsonschema (==4.23.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: jsonschema-specifications (==2023.12.1) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: kombu (==5.3.7) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: lru-dict (==1.3.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: markupsafe (==2.1.5) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: multidict (==6.0.5) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: parsimonious (==0.10.0) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: prompt-toolkit (==3.0.47) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: protobuf (==5.27.2) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: pycryptodome (==3.20.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: pydantic (==2.8.2) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: pydantic-core (==2.20.1) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: python-dateutil (==2.9.0.post0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: pytz (==2024.1) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: pywin32 (==306) ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Windows"
Requires-Dist: referencing (==0.35.1) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: regex (==2024.5.15) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: rlp (==3.0.0) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: rpds-py (==0.19.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: semantic-version (==2.10.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: setuptools (==70.3.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: six (==1.16.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: toolz (==0.12.1) ; python_version >= "3.10" and python_version < "4" and (implementation_name == "pypy" or implementation_name == "cpython")
Requires-Dist: typing-extensions (==4.12.2) ; python_version >= "3.10" and python_version < "4"
Requires-Dist: tzdata (==2024.1) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: urllib3 (==2.2.2) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: vine (==5.1.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: wcwidth (==0.2.13) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: websockets (==12.0) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: werkzeug (==3.0.3) ; python_version >= "3.10" and python_version < "4.0"
Requires-Dist: yarl (==1.9.4) ; python_version >= "3.10" and python_version < "4.0"
Description-Content-Type: text/markdown

<img src="https://raw.githubusercontent.com/pantos-io/client-cli/img/pantos-logo-full.svg" alt="Pantos logo" align="right" width="120" />

[![CI](https://github.com/pantos-io/client-cli/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/pantos-io/client-cli/actions/workflows/ci.yaml) 
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=pantos-io_client-cli2&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=pantos-io_client-cli2)

# Pantos Client CLI

## 1. Introduction

### 1.1 Overview

Welcome to the documentation for Pantos Client CLI, a powerful tool for engaging with the Pantos system. This documentation aims to provide developers with comprehensive information on how to use the features the CLI offers.

### 1.2 Features

The Pantos Client CLI offers the following functionalities:

1. Retrieve the balance of a token
2. Retrieve the service node bids
3. Transfer tokens

## 2. Installation

### 2.1  Prerequisites

Please make sure that your environment meets the following requirements:

#### Keystore File (Wallet)

The CLI requires a private key encrypted with a password.

Since, for the moment, the Pantos protocol supports only EVM blockchains, only an Ethereum account keystore file is sufficient. It can be created with tools such as https://vanity-eth.tk/.

One of the most significant advantages of using Pantos is that the protocol has been designed to require minimal user friction when cross-chain operations are performed. Therefore, when using the Pantos products, you must top up your wallet only with PAN tokens.

#### Python Version

The Pantos Client CLI supports **Python 3.10** or higher. Ensure that you have the correct Python version installed before the installation steps. You can download the latest version of Python from the official [Python website](https://www.python.org/downloads/).

#### Library Versions

The Pantos Client CLI has been tested with the library versions specified in **poetry.lock**.

#### Poetry

Poetry is our tool of choice for dependency management and packaging.

Installing: 
https://python-poetry.org/docs/#installing-with-the-official-installer
or
https://python-poetry.org/docs/#installing-with-pipx

By default poetry creates the venv directory under under ```{cache-dir}/virtualenvs```. If you opt for creating the virtualenv inside the project’s root directory, execute the following command:

```bash
poetry config virtualenvs.in-project true
```

### 2.2  Installation Steps

#### Clone the repository

Clone the repository to your local machine:

```bash
$ git clone https://github.com/pantos-io/client-cli.git
$ cd client-cli
$ virtualenv env
$ source env/bin/activate
$ pip install poetry
```

#### Libraries

Create the virtual environment and install the dependencies:

```bash
$ poetry install --no-root
```

## 3. Usage

### 3.1 Configuration

The CLI comes with two configurations.

1. A configuration for the Pantos Client Library can be found in **client-library.yml**.
The library already has a set configuration for our testnet environment, but feel free to adapt it to your needs.

2. A configuration for the Pantos Client CLI can be found in **client-cli.yml**. Make sure to replace the keystore file path and the password with your private keystore.

### 3.2 Examples

The Pantos Client CLI can be used by executing the **pantos-client.sh** bash script.

```bash
$ pantos-client [-h] {balance,bids,transfer} ...

positional arguments:
  {balance,bids,transfer}
    balance             show the balance of your accounts
    bids                list the available service node bids
    transfer            transfer tokens to another account (possibly on another blockchain)
```

## 4. Contributing

Check the [code of conduct](CODE_OF_CONDUCT.md).

