openapi: 3.0.0
servers:
  - url: 'https://api-eu1.tatum.io'
info:
  version: 1.0.4
  title: Tatum ERC20 Abstraction API
tags:
  - description: |
      <p>An ERC-20 token is a standardized Smart Contract with a predefined set of features. It represents fungible tokens, which can be interchanged. The ERC-20 token is used as a blockchain representation of the currency.
      <br/><br/>
      Tatum now supports ERC20 these blockchains:<br/>
      <ul>
      <li><b>Ethereum</b></li>
      <li><b>Polygon (Matic)</b></li>
      <li><b>Kcs (KCS)</b></li>
      <li><b>Binance Smart Chain</b></li>
      <li><b>Celo</b></li>
      <li><b>Harmony.ONE</b></li>
      <li><b>XDC Network (XinFin)</b></li>
      <li><b>Algorand</b></li>
      </ul>
      </p>
    name: Blockchain / Fungible Token
paths:
  /v3/blockchain/token/deploy:
    post:
      description: |
        <p>Deploy ERC20 Smart Contract. This method creates new ERC20 (Fungible Tokens) Smart Contract on the blockchain. Smart contract is standardized and audited. It is possible to mint and burn tokens.
        It is possible to see the code of the deployed contract <a href="https://github.com/tatumio/tatum-middleware/blob/master/src/contracts/token.sol" target="_blank">here</a>.
        Whole predefined supply of the tokens will be transferred to the chosen address.
        <br/><br/>
        This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key.
        No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and loss of funds. In this method, it is possible to enter privateKey
        or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production,
        <a href="https://github.com/tatumio/tatum-kms" target="_blank">Tatum KMS</a> should be used for the highest security standards, and signatureId should be present in the request.
        Alternatively, using the Tatum client library for supported languages.
        </p>
      operationId: Erc20Deploy
      parameters:
        - description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
          in: header
          name: x-testnet-type
          required: false
          schema:
            default: ethereum-ropsten
            type: string
            enum:
              - ethereum-ropsten
              - ethereum-rinkeby
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: "#/components/schemas/ChainDeployErc20"
                - $ref: "#/components/schemas/ChainDeployErc20KMS"
                - $ref: "#/components/schemas/ChainDeployKcsErc20"
                - $ref: "#/components/schemas/ChainDeployKcsErc20KMS"
                - $ref: "#/components/schemas/ChainDeployCeloErc20"
                - $ref: "#/components/schemas/ChainDeployCeloErc20KMS"
                # - $ref: "#/components/schemas/ChainCreateTronTrc20"
        required: true
      responses:
        200:
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/TransactionHashKMS"
                  - $ref: "#/components/schemas/SignatureId"
          description: OK
        400: &API400
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400"
          description: Bad Request. Validation failed for the given object in the HTTP Body or Request parameters.
        401: &API401
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/Error401NotActive"
                  - $ref: "#/components/schemas/Error401Invalid"
          description: Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
        403: &API403
          description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/Error403"
        500: &API500
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error500"
          description: Internal server error. There was an error on the server during the processing of the request.
      security:
        - X-Api-Key: [ ]
      x-code-samples:
      summary: Deploy ERC20 Smart Contract.
      tags:
        - Blockchain / Fungible Token
  /v3/blockchain/token/mint:
    post:
      description: |
        <h4>2 credits per API call.</h4><br/>
        <p>Create new ERC20 Fungible Tokens and transfer it to destination account. Tokens can be created only if current supply is lower then total supply. Create and transfer any ERC20 tokens from smart contract defined in contractAddress.
        <br/><br/>
        This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key.
        No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and loss of funds. In this method, it is possible to enter privateKey
        or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production,
        <a href="https://github.com/tatumio/tatum-kms" target="_blank">Tatum KMS</a> should be used for the highest security standards, and signatureId should be present in the request.
        Alternatively, using the Tatum client library for supported languages.
        </p>
      parameters:
        - description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
          in: header
          name: x-testnet-type
          required: false
          schema:
            default: ethereum-ropsten
            type: string
            enum:
              - ethereum-ropsten
              - ethereum-rinkeby
      operationId: Erc20Mint
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: "#/components/schemas/ChainMintErc20"
                - $ref: "#/components/schemas/ChainMintErc20KMS"
                - $ref: "#/components/schemas/ChainMintKcsErc20"
                - $ref: "#/components/schemas/ChainMintKcsErc20KMS"
                - $ref: "#/components/schemas/ChainMintCeloErc20"
                - $ref: "#/components/schemas/ChainMintCeloErc20KMS"
        required: true
      responses:
        200:
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/TransactionHashKMS"
                  - $ref: "#/components/schemas/SignatureId"
          description: OK
        400:
          <<: *API400
        401:
          <<: *API401
        403:
          description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/Error403"
        500:
          <<: *API500
      security:
        - X-Api-Key: [ ]
      x-code-samples:
      summary: Mint ERC20
      tags:
        - Blockchain / Fungible Token
  /v3/blockchain/token/burn:
    post:
      description: |
        <h4>2 credits per API call.</h4><br/>
        <p>Burn ERC20 Fungible Tokens. This method destroys ERC20 tokens from smart contract defined in contractAddress.
        <br/><br/>
        This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key.
        No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and loss of funds. In this method, it is possible to enter privateKey
        or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production,
        <a href="https://github.com/tatumio/tatum-kms" target="_blank">Tatum KMS</a> should be used for the highest security standards, and signatureId should be present in the request.
        Alternatively, using the Tatum client library for supported languages.
        </p>
      parameters:
        - description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
          in: header
          name: x-testnet-type
          required: false
          schema:
            default: ethereum-ropsten
            type: string
            enum:
              - ethereum-ropsten
              - ethereum-rinkeby
      operationId: Erc20Burn
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: "#/components/schemas/ChainBurnErc20"
                - $ref: "#/components/schemas/ChainBurnErc20KMS"
                - $ref: "#/components/schemas/ChainBurnKcsErc20"
                - $ref: "#/components/schemas/ChainBurnKcsErc20KMS"
                - $ref: "#/components/schemas/ChainBurnCeloErc20"
                - $ref: "#/components/schemas/ChainBurnCeloErc20KMS"
        required: true
      responses:
        200:
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/TransactionHashKMS"
                  - $ref: "#/components/schemas/SignatureId"
          description: OK
        400:
          <<: *API400
        401:
          <<: *API401
        403:
          description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/Error403"
        500:
          <<: *API500
      security:
        - X-Api-Key: [ ]
      x-code-samples:
      summary: Burn ERC20
      tags:
        - Blockchain / Fungible Token
  /v3/blockchain/token/approve:
    post:
      description: |
        <h4>2 credits per API call.</h4><br/>
        <p>Approve ERC20 Fungible Tokens to be spendable by someone else. This method allows new address to transfer/burn ERC20 tokens on behalf of the owner.
        <br/><br/>
        This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key.
        No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and loss of funds. In this method, it is possible to enter privateKey
        or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production,
        <a href="https://github.com/tatumio/tatum-kms" target="_blank">Tatum KMS</a> should be used for the highest security standards, and signatureId should be present in the request.
        Alternatively, using the Tatum client library for supported languages.
        </p>
      parameters:
        - description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
          in: header
          name: x-testnet-type
          required: false
          schema:
            default: ethereum-ropsten
            type: string
            enum:
              - ethereum-ropsten
              - ethereum-rinkeby
      operationId: Erc20Approve
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: "#/components/schemas/ApproveErc20"
                - $ref: "#/components/schemas/ApproveErc20KMS"
                - $ref: "#/components/schemas/ApproveCeloErc20"
                - $ref: "#/components/schemas/ApproveCeloErc20KMS"
        required: true
      responses:
        200:
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/TransactionHashKMS"
                  - $ref: "#/components/schemas/SignatureId"
          description: OK
        400:
          <<: *API400
        401:
          <<: *API401
        403:
          description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/Error403"
        500:
          <<: *API500
      security:
        - X-Api-Key: [ ]
      x-code-samples:
      summary: Approve spending of ERC20
      tags:
        - Blockchain / Fungible Token
  /v3/blockchain/token/transaction:
    post:
      description: |
        <h4>2 credits per API call.</h4><br/>
        <p>Transfer ERC20 Fungible Tokens from account to account. Transfer any ERC20 tokens from smart contract defined in contractAddress. This method invokes ERC20 method transfer() to transfer tokens.
        <br/><br/>
        This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key.
        No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and loss of funds. In this method, it is possible to enter privateKey
        or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production,
        <a href="https://github.com/tatumio/tatum-kms" target="_blank">Tatum KMS</a> should be used for the highest security standards, and signatureId should be present in the request.
        Alternatively, using the Tatum client library for supported languages.
        Algorand is unique a way that the receiving account should be ready before sending the FT(Erc20) asset.
        To perform this, the receiving account should transfer the FT(Erc20) asset with 0 amount to itself.
        During the process, it's using the same API as the main transaction: the only difference is that the "fromPrivateKey" should be the privateKey of the receiving account.
        </p>
      parameters:
        - description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
          in: header
          name: x-testnet-type
          required: false
          schema:
            default: ethereum-ropsten
            type: string
            enum:
              - ethereum-ropsten
              - ethereum-rinkeby
      operationId: Erc20Transfer
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: "#/components/schemas/ChainTransferAlgoErc20"
                - $ref: "#/components/schemas/ChainTransferAlgoErc20KMS"
                - $ref: "#/components/schemas/ChainTransferEthErc20"
                - $ref: "#/components/schemas/ChainTransferEthErc20KMS"
                - $ref: "#/components/schemas/ChainTransferKcsEthErc20"
                - $ref: "#/components/schemas/ChainTransferKcsEthErc20KMS"
                - $ref: "#/components/schemas/ChainTransferBscBep20"
                - $ref: "#/components/schemas/ChainTransferBscBep20KMS"
                - $ref: "#/components/schemas/ChainTransferCeloErc20Token"
                - $ref: "#/components/schemas/ChainTransferCeloErc20TokenKMS"
                # - $ref: "#/components/schemas/TransferTronTrc20"
        required: true
      responses:
        200:
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/TransactionHashKMS"
                  - $ref: "#/components/schemas/SignatureId"
          description: OK
        400:
          <<: *API400
        401:
          <<: *API401
        403:
          description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/Error403"
        500:
          <<: *API500
      security:
        - X-Api-Key: [ ]
      x-code-samples:
      summary: Transfer ERC20 Token
      tags:
        - Blockchain / Fungible Token
  /v3/blockchain/token/transaction/{chain}/{address}/{tokenAddress}:
    get:
      description: "<h4>1 credit per API call.</h4><br/><p>Get ERC20 transactions by address. This includes incoming and outgoing transactions for the address.</p>"
      operationId: Erc20GetTransactionByAddress
      parameters:
        - description: "Blockchain to work with"
          in: path
          name: chain
          required: true
          schema:
            type: string
            enum:
              - CELO
            example: "CELO"
        - description: "Account address"
          in: path
          name: address
          required: true
          schema:
            type: string
            example: "0x8ce4e40889a13971681391aad29e88efaf91f784"
        - description: "Token address"
          in: path
          name: tokenAddress
          required: true
          schema:
            type: string
            example: "0x1ce4e40889a13971681391aad29e88efaf91f784"
        - description: Max number of items per page is 50.
          in: query
          name: pageSize
          schema:
            type: number
            example: 10
            maximum: 50
            minimum: 1
          required: true
        - description: Offset to obtain next page of the data.
          in: query
          name: offset
          schema:
            type: number
            example: 0
        - description: Transactions from this block onwords will be included.
          in: query
          name: from
          schema:
            type: number
            minimum: 0
            example: 1087623
        - description: Transactions up to this block will be included.
          in: query
          name: to
          schema:
            type: number
            minimum: 0
            example: 1087823
        - description: Sorting of the data. ASC - oldest first, DESC - newest first.
          in: query
          name: sort
          schema:
            type: string
            default: DESC
            example: ASC
            enum:
              - ASC
              - DESC
      responses:
        200:
          content:
            application/json:
              schema:
                type: array
                items:
                  oneOf:
                    - $ref: "#/components/schemas/FungibleTx"
          description: OK
        400:
          <<: *API400
        401:
          <<: *API401
        500:
          <<: *API500
      security:
        - X-Api-Key: [ ]
      x-code-samples:
      summary: Get ERC20 transactions by address
      tags:
        - Blockchain / Fungible Token
  /v3/blockchain/token/balance/{chain}/{contractAddress}/{address}:
    get:
      description: "<h4>1 credit per API call.</h4><br/><p>Get ERC20 Account balance. Returns number of tokens Account holds.</p>"
      operationId: Erc20GetBalance
      parameters:
        - description: "Network name"
          in: path
          name: chain
          required: true
          schema:
            type: string
            example: "CELO"
        - description: "Account address"
          in: path
          name: address
          required: true
          schema:
            type: string
            example: "0x3223AEB8404C7525FcAA6C512f91e287AE9FfE7B"
        - description: "ERC20 contract address"
          in: path
          name: contractAddress
          required: true
          schema:
            type: string
            example: "0x94Ce79B9F001E25BBEbE7C01998A78F7B27D1326"
        - description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
          in: header
          name: x-testnet-type
          required: false
          schema:
            default: ethereum-ropsten
            type: string
            enum:
              - ethereum-ropsten
              - ethereum-rinkeby
      responses:
        200:
          content:
            application/json:
              schema:
                type: object
                properties:
                  balance:
                    type: string
                    description: Number of ERC20 tokens in smallest token unit. E.g. token has 10 decimal places, so data returned are 9*10^10.
                    example: "10"
          description: OK
        400:
          <<: *API400
        401:
          <<: *API401
        403:
          description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error403"
        500:
          <<: *API500
      security:
        - X-Api-Key: [ ]
      x-code-samples:
      summary: Get ERC20 Account balance
      tags:
        - Blockchain / Fungible Token
components:
  securitySchemes:
    X-Api-Key:
      description: |
        To maintain the highest security level, Tatum requires X-API-Key HTTP header.
        This X-API-Key represents identification of the plan and can be used by 1 developer or per environment.
        Each X-API-Key is bound to the test or production blockchains.
      in: header
      name: x-api-key
      type: apiKey
  schemas:
    ChainDeployErc20:
      type: object
      properties:
        chain:
          type: string
          example: ETH
          description: Chain to work with.
          enum:
            - ETH
            - BSC
            - MATIC
            - XDC
            - ONE
            - ALGO
        symbol:
          description: Symbol of the ERC20 token
          example: ERC_SYMBOL
          maxLength: 30
          minLength: 1
          type: string
        name:
          description: Name of the ERC20 token
          example: MyERC20
          maxLength: 100
          minLength: 1
          pattern: ^[a-zA-Z0-9_]+$
          type: string
        totalCap:
          description: Max supply of ERC20 token.
          maxLength: 38
          example: "10000000"
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
          type: string
        supply:
          description: Initial supply of ERC20 token. If totalCap is not defined, this will be the total cap.
          maxLength: 38
          example: "10000000"
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
          type: string
        digits:
          description: Number of decimal points
          example: 18
          maximum: 30
          minimum: 1
          type: number
        address:
          description: Address on Ethereum blockchain, where all created ERC20 tokens will be transferred.
          maxLength: 43
          minLength: 42
          example: "0xa0Ca9FF38Bad06eBe64f0fDfF279cAE35129F5C6"
          type: string
        fromPrivateKey:
          description: Private key of Ethereum account address, from which the fee for the deployment of ERC20 will be paid. Private key, or signature Id must be present.
          type: string
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          maxLength: 66
          minLength: 66
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Ethereum transaction. If not present, last known nonce will be used.
        fee:
          description: Custom defined fee. If not present, it will be calculated automatically.
          type: object
          required:
            - gasLimit
            - gasPrice
          properties:
            gasLimit:
              type: string
              description: Gas limit for transaction in gas price.
              pattern: ^[+]?\d+$
              example: "40000"
            gasPrice:
              type: string
              description: Gas price in Gwei.
              pattern: ^[+]?\d+$
              example: "20"
      required:
        - chain
        - name
        - symbol
        - address
        - supply
        - fromPrivateKey
        - digits
    FungibleTx:
      type: object
      properties:
        blockNumber:
          type: number
          example: 6541235
          description: Block number
        txId:
          type: string
          example: "0x955c1037608c7aecb6d1a3f150ce7d0a80536bcabb0deb69d62f55292cc4c372"
          description: Transaction ID
        contractAddress:
          type: string
          example: "0x4f54fAD27F7F46C102Cd49b8E75C5593397cd9c3"
          description: Contract address
        amount:
          type: string
          example: "1"
          description: Amount of tokens transferred, in smallest decimals
        from:
          type: string
          example: "0x780c3de0aba1b51f04cfe8a5d9d277d4ad032b8d"
          description: Sender
        to:
          type: string
          example: "0x8cb76aed9c5e336ef961265c6079c14e9cd3d2ea"
          description: recipient
      required:
        - txId
        - blockNumber
        - contractAddress
        - amount
        - from
        - to
    ChainDeployErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: ETH
          description: Chain to work with.
          enum:
            - ETH
            - BSC
            - XDC
        symbol:
          description: Symbol of the ERC20 token
          example: ERC_SYMBOL
          maxLength: 30
          minLength: 1
          type: string
        name:
          description: Name of the ERC20 token
          example: MyERC20
          maxLength: 100
          minLength: 1
          pattern: ^[a-zA-Z0-9_]+$
          type: string
        totalCap:
          description: Max supply of ERC20 token.
          maxLength: 38
          example: "10000000"
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
          type: string
        supply:
          description: Max supply of ERC20 token.
          maxLength: 38
          example: "10000000"
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
          type: string
        digits:
          description: Number of decimal points
          example: 18
          maximum: 30
          minimum: 1
          type: number
        address:
          description: Address on Ethereum blockchain, where all created ERC20 tokens will be transferred.
          maxLength: 43
          minLength: 42
          example: "0xa0Ca9FF38Bad06eBe64f0fDfF279cAE35129F5C6"
          type: string
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Ethereum transaction. If not present, last known nonce will be used.
        fee:
          description: Custom defined fee. If not present, it will be calculated automatically.
          type: object
          required:
            - gasLimit
            - gasPrice
          properties:
            gasLimit:
              type: string
              description: Gas limit for transaction in gas price.
              pattern: ^[+]?\d+$
              example: "40000"
            gasPrice:
              type: string
              description: Gas price in Gwei.
              pattern: ^[+]?\d+$
              example: "20"
      required:
        - chain
        - name
        - symbol
        - address
        - supply
        - signatureId
        - digits
    ChainDeployKcsErc20:
      type: object
      properties:
        chain:
          type: string
          example: KCS
          description: Chain to work with.
          enum:
            - KCS
        symbol:
          description: Symbol of the ERC20 token
          example: ERC_SYMBOL
          maxLength: 30
          minLength: 1
          type: string
        name:
          description: Name of the ERC20 token
          example: MyERC20
          maxLength: 100
          minLength: 1
          pattern: ^[a-zA-Z0-9_]+$
          type: string
        totalCap:
          description: Max supply of ERC20 token.
          maxLength: 38
          example: "10000000"
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
          type: string
        supply:
          description: Initial supply of ERC20 token. If totalCap is not defined, this will be the total cap.
          maxLength: 38
          example: "10000000"
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
          type: string
        digits:
          description: Number of decimal points
          example: 18
          maximum: 30
          minimum: 1
          type: number
        address:
          description: Address on Ethereum blockchain, where all created ERC20 tokens will be transferred.
          maxLength: 43
          minLength: 42
          example: "0xa0Ca9FF38Bad06eBe64f0fDfF279cAE35129F5C6"
          type: string
        fromPrivateKey:
          description: Private key of Ethereum account address, from which the fee for the deployment of ERC20 will be paid. Private key, or signature Id must be present.
          type: string
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          maxLength: 66
          minLength: 66
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Ethereum transaction. If not present, last known nonce will be used.
        fee:
          description: Custom defined fee. If not present, it will be calculated automatically.
          type: object
          required:
            - gasLimit
            - gasPrice
          properties:
            gasLimit:
              type: string
              description: Gas limit for transaction in gas price.
              pattern: ^[+]?\d+$
              example: "40000"
            gasPrice:
              type: string
              description: Gas price in Gwei.
              pattern: ^[+]?\d+$
              example: "20"
      required:
        - chain
        - name
        - symbol
        - address
        - supply
        - fromPrivateKey
        - digits
    ChainDeployKcsErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: KCS
          description: Chain to work with.
          enum:
            - KCS
        symbol:
          description: Symbol of the ERC20 token
          example: ERC_SYMBOL
          maxLength: 30
          minLength: 1
          type: string
        name:
          description: Name of the ERC20 token
          example: MyERC20
          maxLength: 100
          minLength: 1
          pattern: ^[a-zA-Z0-9_]+$
          type: string
        totalCap:
          description: Max supply of ERC20 token.
          maxLength: 38
          example: "10000000"
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
          type: string
        supply:
          description: Max supply of ERC20 token.
          maxLength: 38
          example: "10000000"
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
          type: string
        digits:
          description: Number of decimal points
          example: 18
          maximum: 30
          minimum: 1
          type: number
        address:
          description: Address on Ethereum blockchain, where all created ERC20 tokens will be transferred.
          maxLength: 43
          minLength: 42
          example: "0xa0Ca9FF38Bad06eBe64f0fDfF279cAE35129F5C6"
          type: string
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Ethereum transaction. If not present, last known nonce will be used.
        fee:
          description: Custom defined fee. If not present, it will be calculated automatically.
          type: object
          required:
            - gasLimit
            - gasPrice
          properties:
            gasLimit:
              type: string
              description: Gas limit for transaction in gas price.
              pattern: ^[+]?\d+$
              example: "40000"
            gasPrice:
              type: string
              description: Gas price in Gwei.
              pattern: ^[+]?\d+$
              example: "20"
      required:
        - chain
        - name
        - symbol
        - address
        - supply
        - signatureId
        - digits
    ChainDeployCeloErc20:
      type: object
      properties:
        chain:
          type: string
          example: CELO
          description: Chain to work with.
          enum:
            - CELO
        symbol:
          description: Symbol of the ERC20 token
          example: ERC_SYMBOL
          maxLength: 30
          minLength: 1
          type: string
        name:
          description: Name of the ERC20 token
          example: MyERC20
          maxLength: 100
          minLength: 1
          pattern: ^[a-zA-Z0-9_]+$
          type: string
        totalCap:
          description: Max supply of ERC20 token.
          maxLength: 38
          example: "10000000"
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
          type: string
        supply:
          description: Max supply of ERC20 token.
          maxLength: 38
          example: "10000000"
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
          type: string
        digits:
          description: Number of decimal points
          example: 18
          maximum: 30
          minimum: 1
          type: number
        address:
          description: Address on Ethereum blockchain, where all created ERC20 tokens will be transferred.
          maxLength: 42
          minLength: 42
          example: "0xa0Ca9FF38Bad06eBe64f0fDfF279cAE35129F5C6"
          type: string
        fromPrivateKey:
          description: Private key of Ethereum account address, from which the fee for the deployment of ERC20 will be paid. Private key, or signature Id must be present.
          type: string
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          maxLength: 66
          minLength: 66
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Ethereum transaction. If not present, last known nonce will be used.
        feeCurrency:
          type: string
          description: Currency to pay for transaction gas
          enum:
            - CELO
            - CUSD
            - CEUR
      required:
        - chain
        - name
        - symbol
        - address
        - supply
        - fromPrivateKey
        - digits
        - feeCurrency
    ChainDeployCeloErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: CELO
          description: Chain to work with.
          enum:
            - CELO
        symbol:
          description: Symbol of the ERC20 token
          example: ERC_SYMBOL
          maxLength: 30
          minLength: 1
          type: string
        name:
          description: Name of the ERC20 token
          example: MyERC20
          maxLength: 100
          minLength: 1
          pattern: ^[a-zA-Z0-9_]+$
          type: string
        totalCap:
          description: Max supply of ERC20 token.
          maxLength: 38
          example: "10000000"
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
          type: string
        supply:
          description: Max supply of ERC20 token.
          maxLength: 38
          example: "10000000"
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
          type: string
        digits:
          description: Number of decimal points
          example: 18
          maximum: 30
          minimum: 1
          type: number
        address:
          description: Address on Ethereum blockchain, where all created ERC20 tokens will be transferred.
          maxLength: 42
          minLength: 42
          example: "0xa0Ca9FF38Bad06eBe64f0fDfF279cAE35129F5C6"
          type: string
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Ethereum transaction. If not present, last known nonce will be used.
        feeCurrency:
          type: string
          description: Currency to pay for transaction gas
          enum:
            - CELO
            - CUSD
            - CEUR
      required:
        - chain
        - name
        - symbol
        - address
        - supply
        - signatureId
        - digits
        - feeCurrency
    # ChainCreateTronTrc20:
    #   type: object
    #   properties:
    #     chain:
    #       type: string
    #       example: TRON
    #       description: Chain to work with.
    #       enum:
    #         - TRON
    #     fromPrivateKey:
    #       type: string
    #       minLength: 64
    #       maxLength: 64
    #       description: Private key of the address, from which the TRX will be sent.
    #       example: 842E09EB40D8175979EFB0071B28163E11AED0F14BDD84090A4CEFB936EF5701
    #     recipient:
    #       type: string
    #       minLength: 34
    #       maxLength: 34
    #       description: Recipient address of created TRC20 tokens.
    #       example: TYMwiDu22V6XG3yk6W9cTVBz48okKLRczh
    #     name:
    #       type: string
    #       minLength: 1
    #       maxLength: 100
    #       description: Name of the token.
    #       example: My token
    #     symbol:
    #       type: string
    #       minLength: 1
    #       maxLength: 100
    #       description: Symbol of the token.
    #       example: SYM
    #     totalSupply:
    #       type: number
    #       minimum: 0
    #       description: Total supply of the tokens.
    #       example: 100000
    #     decimals:
    #       type: number
    #       minimum: 0
    #       maximum: 30
    #       description: Number of decimal places of the token.
    #       example: 10
    #   required:
    #     - chain
    #     - fromPrivateKey
    #     - name
    #     - recipient
    #     - symbol
    #     - totalSupply
    #     - decimals
    ChainMintErc20:
      type: object
      properties:
        chain:
          type: string
          example: ETH
          description: Chain to work with.
          enum:
            - ETH
            - BSC
            - MATIC
            - XDC
            - ONE
        amount:
          description: Amount to be minted and transfered to the recipient.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        to:
          maxLength: 43
          minLength: 42
          description: Blockchain address to send ERC-20 tokens to.
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC-20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to transaction. If not present, last known nonce will be used.
      required:
        - chain
        - to
        - amount
        - contractAddress
        - fromPrivateKey
    ChainMintKcsErc20:
      type: object
      properties:
        chain:
          type: string
          example: KCS
          description: Chain to work with.
          enum:
            - KCS
        amount:
          description: Amount to be minted and transfered to the recipient.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        to:
          maxLength: 43
          minLength: 42
          description: Blockchain address to send ERC-20 tokens to.
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC-20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to transaction. If not present, last known nonce will be used.
      required:
        - chain
        - to
        - amount
        - contractAddress
        - fromPrivateKey
    ChainMintErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: ETH
          description: Chain to work with.
          enum:
            - ETH
            - BSC
            - XDC
        amount:
          description: Amount to be minted and transfered to the recipient.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        to:
          maxLength: 43
          minLength: 42
          description: Blockchain address to send ERC-20 tokens to.
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC-20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to transaction. If not present, last known nonce will be used.
      required:
        - chain
        - to
        - amount
        - contractAddress
        - signatureId
    ChainMintKcsErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: KCS
          description: Chain to work with.
          enum:
            - KCS
        amount:
          description: Amount to be minted and transfered to the recipient.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        to:
          maxLength: 43
          minLength: 42
          description: Blockchain address to send ERC-20 tokens to.
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC-20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to transaction. If not present, last known nonce will be used.
      required:
        - chain
        - to
        - amount
        - contractAddress
        - signatureId
    ChainMintCeloErc20:
      type: object
      properties:
        chain:
          type: string
          example: CELO
          description: Chain to work with.
          enum:
            - CELO
        amount:
          description: Amount to be minted and transfered to the recipient.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        to:
          maxLength: 42
          minLength: 42
          description: Blockchain address to send ERC-20 tokens to.
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        contractAddress:
          maxLength: 42
          minLength: 42
          description: Address of ERC-20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Celo transaction. If not present, last known nonce will be used.
        feeCurrency:
          type: string
          description: Currency to pay for transaction gas
          enum:
            - CELO
            - CUSD
            - CEUR
      required:
        - chain
        - to
        - amount
        - feeCurrency
        - contractAddress
        - fromPrivateKey
    ChainMintCeloErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: CELO
          description: Chain to work with.
          enum:
            - CELO
        amount:
          description: Amount to be minted and transfered to the recipient.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        to:
          maxLength: 42
          minLength: 42
          description: Blockchain address to send ERC-20 tokens to.
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        contractAddress:
          maxLength: 42
          minLength: 42
          description: Address of ERC-20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Celo transaction. If not present, last known nonce will be used.
        feeCurrency:
          type: string
          description: Currency to pay for transaction gas
          enum:
            - CELO
            - CUSD
            - CEUR
      required:
        - chain
        - to
        - amount
        - feeCurrency
        - contractAddress
        - signatureId
    ApproveErc20:
      type: object
      properties:
        chain:
          type: string
          example: ETH
          description: Chain to work with.
          enum:
            - ETH
            - BSC
            - MATIC
            - ONE
        amount:
          description: Amount to be approved for the spender.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        spender:
          maxLength: 43
          minLength: 42
          description: Blockchain address of the new spender.
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC-20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to transaction. If not present, last known nonce will be used.
      required:
        - chain
        - spender
        - amount
        - contractAddress
        - fromPrivateKey
    ApproveErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: ETH
          description: Chain to work with.
          enum:
            - ETH
            - BSC
            - MATIC
            - ONE
        amount:
          description: Amount to be approved for the spender.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        spender:
          maxLength: 43
          minLength: 42
          description: Blockchain address of the new spender.
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC-20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to transaction. If not present, last known nonce will be used.
      required:
        - chain
        - spender
        - amount
        - contractAddress
        - signatureId
    ApproveCeloErc20:
      type: object
      properties:
        chain:
          type: string
          example: CELO
          description: Chain to work with.
          enum:
            - CELO
        amount:
          description: Amount to be approved for the spender.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        spender:
          maxLength: 42
          minLength: 42
          description: Blockchain address of the new spender.
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        contractAddress:
          maxLength: 42
          minLength: 42
          description: Address of ERC-20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Celo transaction. If not present, last known nonce will be used.
        feeCurrency:
          type: string
          description: Currency to pay for transaction gas
          enum:
            - CELO
            - CUSD
            - CEUR
      required:
        - chain
        - spender
        - amount
        - feeCurrency
        - contractAddress
        - fromPrivateKey
    ApproveCeloErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: CELO
          description: Chain to work with.
          enum:
            - CELO
        amount:
          description: Amount to be approved for the spender.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        spender:
          maxLength: 42
          minLength: 42
          description: Blockchain address of the new spender.
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        contractAddress:
          maxLength: 42
          minLength: 42
          description: Address of ERC-20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Celo transaction. If not present, last known nonce will be used.
        feeCurrency:
          type: string
          description: Currency to pay for transaction gas
          enum:
            - CELO
            - CUSD
            - CEUR
      required:
        - chain
        - spender
        - amount
        - feeCurrency
        - contractAddress
        - signatureId
    ChainBurnErc20:
      type: object
      properties:
        chain:
          type: string
          example: ETH
          description: Chain to work with.
          enum:
            - ETH
            - BSC
            - MATIC
            - XDC
            - ONE
            - ALGO
        amount:
          description: Amount of tokens to be destroyed.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Celo transaction. If not present, last known nonce will be used.
      required:
        - chain
        - contractAddress
        - fromPrivateKey
        - amount
    ChainBurnErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: ETH
          description: Chain to work with.
          enum:
            - ETH
            - BSC
            - XDC
            - ALGO
        amount:
          description: Amount of tokens to be destroyed.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Celo transaction. If not present, last known nonce will be used.
      required:
        - chain
        - contractAddress
        - signatureId
        - amount
    ChainBurnKcsErc20:
      type: object
      properties:
        chain:
          type: string
          example: KCS
          description: Chain to work with.
          enum:
            - KCS
        amount:
          description: Amount of tokens to be destroyed.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Celo transaction. If not present, last known nonce will be used.
      required:
        - chain
        - contractAddress
        - fromPrivateKey
        - amount
    ChainBurnKcsErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: KCS
          description: Chain to work with.
          enum:
            - KCS
        amount:
          description: Amount of tokens to be destroyed.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Celo transaction. If not present, last known nonce will be used.
      required:
        - chain
        - contractAddress
        - signatureId
        - amount
    ChainBurnCeloErc20:
      type: object
      properties:
        chain:
          type: string
          example: CELO
          description: Chain to work with.
          enum:
            - CELO
        amount:
          description: Amount of tokens to be destroyed.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 42
          minLength: 42
          description: Address of ERC20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Celo transaction. If not present, last known nonce will be used.
        feeCurrency:
          type: string
          description: Currency to pay for transaction gas
          enum:
            - CELO
            - CUSD
            - CEUR
      required:
        - chain
        - contractAddress
        - feeCurrency
        - fromPrivateKey
        - amount
    ChainBurnCeloErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: CELO
          description: Chain to work with.
          enum:
            - CELO
        amount:
          description: Amount of tokens to be destroyed.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 42
          minLength: 42
          description: Address of ERC20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Celo transaction. If not present, last known nonce will be used.
        feeCurrency:
          type: string
          description: Currency to pay for transaction gas
          enum:
            - CELO
            - CUSD
            - CEUR
      required:
        - chain
        - contractAddress
        - feeCurrency
        - signatureId
        - amount
    ChainTransferAlgoErc20:
      type: object
      properties:
        chain:
          type: string
          example: ALGO
          description: Chain to work with.
          enum:
            - ALGO
        to:
          maxLength: 58
          minLength: 42
          description: Blockchain address to send ERC20 token to
          example: "NTAESFCB3WOD7SAOL42KSPVARLB3JFA3MNX3AESWHYVT2RMYDVZI6YLG4Y"
          type: string
        amount:
          description: Amount to be sent.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 43
          minLength: 1
          description: assetIndex - asset index uniquely specifying the asset
          example: "1"
          type: string
        fromPrivateKey:
          type: string
          maxLength: 103
          example: "72TCV5BRQPBMSAFPYO3CPWVDBYWNGAYNMTW5QHENOMQF7I6QLNMJWCJZ7A3V5YKD7QD6ZZPEHG2PV2ZVVEDDO6BCRGXWIL3DIUMSUCI"
          minLength: 103
          description: Private key of sender address. Private key, or signature Id must be present.
      required:
        - chain
        - currency
        - to
        - contractAddress
        - fromPrivateKey
        - amount
    ChainTransferAlgoErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: ALGO
          description: Chain to work with.
          enum:
            - ALGO
        to:
          maxLength: 58
          minLength: 42
          description: Blockchain address to send ERC20 token to
          example: "TMETT6BXL3QUH7AH5TS6IONU7LVTLKIGG54CFCNPMQXWGRIZFIESZBYWP4"
          type: string
        amount:
          description: Amount to be sent.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 43
          minLength: 1
          description: assetIndex - asset index uniquely specifying the asset
          example: "1"
          type: string
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        from:
          maxLength: 58
          minLength: 42
          description: Blockchain address to send ERC20 token to
          example: "NTAESFCB3WOD7SAOL42KSPVARLB3JFA3MNX3AESWHYVT2RMYDVZI6YLG4Y"
          type: string
      required:
        - chain
        - currency
        - to
        - contractAddress
        - signatureId
        - amount
        - from
    ChainTransferEthErc20:
      type: object
      properties:
        chain:
          type: string
          example: ETH
          description: Chain to work with.
          enum:
            - ETH
            - BSC
            - MATIC
            - XDC
            - ONE
        to:
          maxLength: 50
          minLength: 1
          description: Blockchain address to send ERC20 token to
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        amount:
          description: Amount to be sent.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        digits:
          description: Number of decimal points that ERC20 token has.
          example: 18
          maximum: 30
          minimum: 1
          type: number
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Ethereum transaction. If not present, last known nonce will be used.
        fee:
          description: Custom defined fee. If not present, it will be calculated automatically.
          type: object
          required:
            - gasLimit
            - gasPrice
          properties:
            gasLimit:
              type: string
              description: Gas limit for transaction in gas price.
              pattern: ^[+]?\d+$
              example: "40000"
            gasPrice:
              type: string
              description: Gas price in Gwei.
              pattern: ^[+]?\d+$
              example: "20"
      required:
        - chain
        - currency
        - to
        - contractAddress
        - digits
        - fromPrivateKey
        - amount
    ChainTransferEthErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: ETH
          description: Chain to work with.
          enum:
            - ETH
            - BSC
            - MATIC
            - XDC
            - ONE
        to:
          maxLength: 50
          minLength: 1
          description: Blockchain address to send ERC20 token to
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        amount:
          description: Amount to be sent.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        digits:
          description: Number of decimal points that ERC20 token has.
          example: 18
          maximum: 30
          minimum: 1
          type: number
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Ethereum transaction. If not present, last known nonce will be used.
        fee:
          description: Custom defined fee. If not present, it will be calculated automatically.
          type: object
          required:
            - gasLimit
            - gasPrice
          properties:
            gasLimit:
              type: string
              description: Gas limit for transaction in gas price.
              pattern: ^[+]?\d+$
              example: "40000"
            gasPrice:
              type: string
              description: Gas price in Gwei.
              pattern: ^[+]?\d+$
              example: "20"
      required:
        - chain
        - currency
        - to
        - contractAddress
        - digits
        - signatureId
        - amount
    ChainTransferKcsEthErc20:
      type: object
      properties:
        chain:
          type: string
          example: KCS
          description: Chain to work with.
          enum:
            - KCS
        to:
          maxLength: 50
          minLength: 1
          description: Blockchain address to send ERC20 token to
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        amount:
          description: Amount to be sent.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        digits:
          description: Number of decimal points that ERC20 token has.
          example: 18
          maximum: 30
          minimum: 1
          type: number
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Ethereum transaction. If not present, last known nonce will be used.
        fee:
          description: Custom defined fee. If not present, it will be calculated automatically.
          type: object
          required:
            - gasLimit
            - gasPrice
          properties:
            gasLimit:
              type: string
              description: Gas limit for transaction in gas price.
              pattern: ^[+]?\d+$
              example: "40000"
            gasPrice:
              type: string
              description: Gas price in Gwei.
              pattern: ^[+]?\d+$
              example: "20"
      required:
        - chain
        - currency
        - to
        - contractAddress
        - digits
        - fromPrivateKey
        - amount
    ChainTransferKcsEthErc20KMS:
      type: object
      properties:
        chain:
          type: string
          example: KCS
          description: Chain to work with.
          enum:
            - KCS
        to:
          maxLength: 50
          minLength: 1
          description: Blockchain address to send ERC20 token to
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        amount:
          description: Amount to be sent.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        digits:
          description: Number of decimal points that ERC20 token has.
          example: 18
          maximum: 30
          minimum: 1
          type: number
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Ethereum transaction. If not present, last known nonce will be used.
        fee:
          description: Custom defined fee. If not present, it will be calculated automatically.
          type: object
          required:
            - gasLimit
            - gasPrice
          properties:
            gasLimit:
              type: string
              description: Gas limit for transaction in gas price.
              pattern: ^[+]?\d+$
              example: "40000"
            gasPrice:
              type: string
              description: Gas price in Gwei.
              pattern: ^[+]?\d+$
              example: "20"
      required:
        - chain
        - currency
        - to
        - contractAddress
        - digits
        - signatureId
        - amount
    ChainTransferBscBep20:
      type: object
      properties:
        chain:
          type: string
          example: BSC
          description: Chain to work with.
          enum:
            - BSC
        to:
          maxLength: 50
          minLength: 1
          description: Blockchain address to send BEP20 token to
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        amount:
          description: Amount to be sent.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 42
          minLength: 42
          description: Address of BEP20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        digits:
          description: Number of decimal points that BEP20 token has.
          example: 18
          maximum: 30
          minimum: 1
          type: number
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to BSC transaction. If not present, last known nonce will be used.
        fee:
          description: Custom defined fee. If not present, it will be calculated automatically.
          type: object
          required:
            - gasLimit
            - gasPrice
          properties:
            gasLimit:
              type: string
              description: Gas limit for transaction in gas price.
              pattern: ^[+]?\d+$
              example: "40000"
            gasPrice:
              type: string
              description: Gas price in Gwei.
              pattern: ^[+]?\d+$
              example: "20"
      required:
        - chain
        - to
        - contractAddress
        - digits
        - fromPrivateKey
        - amount
    ChainTransferBscBep20KMS:
      type: object
      properties:
        chain:
          type: string
          example: BSC
          description: Chain to work with.
          enum:
            - BSC
        to:
          maxLength: 50
          minLength: 1
          description: Blockchain address to send BEP20 token to
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        amount:
          description: Amount to be sent.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 42
          minLength: 42
          description: Address of BEP20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        digits:
          description: Number of decimal points that BEP20 token has.
          example: 18
          maximum: 30
          minimum: 1
          type: number
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to BSC transaction. If not present, last known nonce will be used.
        fee:
          description: Custom defined fee. If not present, it will be calculated automatically.
          type: object
          required:
            - gasLimit
            - gasPrice
          properties:
            gasLimit:
              type: string
              description: Gas limit for transaction in gas price.
              pattern: ^[+]?\d+$
              example: "40000"
            gasPrice:
              type: string
              description: Gas price in Gwei.
              pattern: ^[+]?\d+$
              example: "20"
      required:
        - chain
        - to
        - contractAddress
        - digits
        - signatureId
        - amount
    ChainTransferCeloErc20Token:
      type: object
      properties:
        chain:
          type: string
          example: CELO
          description: Chain to work with.
          enum:
            - CELO
        to:
          maxLength: 50
          minLength: 1
          description: Blockchain address to send ERC20 token to
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        amount:
          description: Amount to be sent.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 42
          minLength: 42
          description: Address of ERC20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        digits:
          description: Number of decimal points that ERC20 token has.
          example: 18
          maximum: 30
          minimum: 1
          type: number
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Ethereum transaction. If not present, last known nonce will be used.
        feeCurrency:
          type: string
          description: Currency to pay for transaction gas
          enum:
            - CELO
            - CUSD
            - CEUR
      required:
        - chain
        - to
        - contractAddress
        - digits
        - feeCurrency
        - fromPrivateKey
        - amount
    ChainTransferCeloErc20TokenKMS:
      type: object
      properties:
        chain:
          type: string
          example: CELO
          description: Chain to work with.
          enum:
            - CELO
        to:
          maxLength: 50
          minLength: 1
          description: Blockchain address to send ERC20 token to
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        amount:
          description: Amount to be sent.
          example: "100000"
          type: string
          pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
        contractAddress:
          maxLength: 42
          minLength: 42
          description: Address of ERC20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        digits:
          description: Number of decimal points that ERC20 token has.
          example: 18
          maximum: 30
          minimum: 1
          type: number
        signatureId:
          type: string
          minLength: 36
          maxLength: 36
          format: uuid
          example: 26d3883e-4e17-48b3-a0ee-09a3e484ac83
          description: Identifier of the private key associated in signing application. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Ethereum transaction. If not present, last known nonce will be used.
        feeCurrency:
          type: string
          description: Currency to pay for transaction gas
          enum:
            - CELO
            - CUSD
            - CEUR
      required:
        - chain
        - to
        - contractAddress
        - digits
        - feeCurrency
        - signatureId
        - amount
    # ChainTransferTronTrc20:
    #   type: object
    #   properties:
    #     chain:
    #       type: string
    #       example: TRON
    #       description: Chain to work with.
    #       enum:
    #         - TRON
    #     fromPrivateKey:
    #       type: string
    #       minLength: 64
    #       maxLength: 64
    #       description: Private key of the address, from which the TRX will be sent.
    #       example: 842E09EB40D8175979EFB0071B28163E11AED0F14BDD84090A4CEFB936EF5701
    #     to:
    #       type: string
    #       minLength: 34
    #       maxLength: 34
    #       description: Recipient address of TRON account in Base58 format.
    #       example: TYMwiDu22V6XG3yk6W9cTVBz48okKLRczh
    #     tokenAddress:
    #       type: string
    #       minLength: 34
    #       maxLength: 34
    #       description: Address of the TRC20 token to transfer.
    #       example: "TVAEYCmc15awaDRAjUZ1kvcHwQQaoPw2CW"
    #     feeLimit:
    #       type: number
    #       minimum: 0
    #       description: Fee in TRX to be paid.
    #       example: 0.01
    #     amount:
    #       description: Amount to be sent in TRX.
    #       example: "100000"
    #       pattern: ^[+]?((\d+(\.\d*)?)|(\.\d+))$
    #       type: string
    #   required:
    #     - chain
    #     - fromPrivateKey
    #     - tokenAddress
    #     - to
    #     - amount
    #     - feeLimit
    ChainCallSmartContractMethod:
      type: object
      properties:
        chain:
          type: string
          example: ETH
          description: Chain to work with.
          enum:
            - ETH
            - BSC
            - XDC
        contractAddress:
          maxLength: 43
          minLength: 42
          description: Address of ERC20 token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        methodName:
          minLength: 1
          maxLength: 500
          description: Name of the method to invoke on smart contract.
          type: string
          example: transfer
        methodABI:
          type: object
          description: ABI of the method to invoke.
        params:
          type: array
          example: [ '0x632' ]
          items:
            type: string
          description: Parameters of the method to be invoked.
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to Ethereum transaction. If not present, last known nonce will be used.
        fee:
          description: Custom defined fee. If not present, it will be calculated automatically.
          type: object
          required:
            - gasLimit
            - gasPrice
          properties:
            gasLimit:
              type: string
              description: Gas limit for transaction in gas price.
              pattern: ^[+]?\d+$
              example: "40000"
            gasPrice:
              type: string
              description: Gas price in Gwei.
              pattern: ^[+]?\d+$
              example: "20"
      required:
        - chain
        - contractAddress
        - params
        - methodABI
        - fromPrivateKey
        - methodName
    CallCeloSmartContractMethod:
      type: object
      properties:
        chain:
          type: string
          example: CELO
          description: Chain to work with.
          enum:
            - CELO
        contractAddress:
          maxLength: 42
          minLength: 42
          description: Address of token
          example: "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
          type: string
        methodName:
          minLength: 1
          maxLength: 500
          description: Name of the method to invoke on smart contract.
          type: string
          example: transfer
        methodABI:
          type: object
          description: ABI of the method to invoke.
        params:
          type: array
          example: [ '0x632' ]
          items:
            type: string
          description: Parameters of the method to be invoked.
        fromPrivateKey:
          type: string
          maxLength: 66
          example: "0x05e150c73f1920ec14caa1e0b6aa09940899678051a78542840c2668ce5080c2"
          minLength: 66
          description: Private key of sender address. Private key, or signature Id must be present.
        nonce:
          type: number
          minimum: 0
          description: Nonce to be set to transaction. If not present, last known nonce will be used.
        fee:
          description: Custom defined fee. If not present, it will be calculated automatically.
          type: object
          required:
            - gasLimit
            - gasPrice
          properties:
            gasLimit:
              type: string
              description: Gas limit for transaction in gas price.
              pattern: ^[+]?\d+$
              example: "40000"
            gasPrice:
              type: string
              description: Gas price in Gwei.
              pattern: ^[+]?\d+$
              example: "20"
        feeCurrency:
          type: string
          description: Currency to pay for transaction gas
          enum:
            - CELO
            - CUSD
            - CEUR
      required:
        - chain
        - contractAddress
        - params
        - methodABI
        - fromPrivateKey
        - methodName
        - feeCurrency
