Skip to content

Latest commit

 

History

History
85 lines (57 loc) · 3.64 KB

dispenser-client.md

File metadata and controls

85 lines (57 loc) · 3.64 KB

TestNet Dispenser Client

The TestNet Dispenser Client is a utility for interacting with the AlgoKit TestNet Dispenser API. It provides methods to fund an account, register a refund for a transaction, and get the current limit for an account.

Creating a Dispenser Client

To create a Dispenser Client, you need to provide an authorization token. This can be done in two ways:

  1. Pass the token directly to the client constructor as authToken.
  2. Set the token as an environment variable ALGOKIT_DISPENSER_ACCESS_TOKEN (see docs on how to obtain the token).

If both methods are used, the constructor argument takes precedence.

The recommended way to get a TestNet dispenser API client is via ClientManager:

// With auth token
const dispenserClient = algorand.client.getTestNetDispenser({
  authToken: 'your_auth_token',
})

// With auth token and timeout
const dispenserClient = algorand.client.getTestNetDispenser({
  authToken: 'your_auth_token',
  requestTimeout: 2 /* seconds */,
})

// From environment variables
// i.e. process.env['ALGOKIT_DISPENSER_ACCESS_TOKEN'] = 'your_auth_token'
const dispenserClient = algorand.client.getTestNetDispenserFromEnvironment()

// From environment variables with request timeout
const dispenserClient = algorand.client.getTestNetDispenserFromEnvironment({
  requestTimeout: 2 /* seconds */,
})

Alternatively, you can construct it directly.

import { TestNetDispenserApiClient } from '@algorandfoundation/algokit-utils/types/dispenser-client'

// Using constructor argument
const client = new TestNetDispenserApiClient({ authToken: 'your_auth_token' })
const clientFromAlgorandClient = algorand.client.getTestNetDispenser({ authToken: 'your_auth_token' })

// Using environment variable
process.env['ALGOKIT_DISPENSER_ACCESS_TOKEN'] = 'your_auth_token'
const client = new TestNetDispenserApiClient()
const clientFromAlgorandClient = algorand.client.getTestNetDispenserFromEnvironment()

Funding an Account

To fund an account with Algo from the dispenser API, use the fund method. This method requires the receiver's address, the amount to be funded, and the asset ID.

const response = await client.fund('receiver_address', 1000)

The fund method returns a DispenserFundResponse object, which contains the transaction ID (txId) and the amount funded.

Registering a Refund

To register a refund for a transaction with the dispenser API, use the refund method. This method requires the transaction ID of the refund transaction.

await client.refund('transaction_id')

Keep in mind, to perform a refund you need to perform a payment transaction yourself first by sending funds back to TestNet Dispenser, then you can invoke this refund endpoint and pass the txn_id of your refund txn. You can obtain dispenser address by inspecting the sender field of any issued fund transaction initiated via fund.

Getting Current Limit

To get the current limit for an account with Algo from the dispenser API, use the getLimit method. This method requires the account address.

const response = await client.getLimit()

The limit method returns a DispenserLimitResponse object, which contains the current limit amount.

Error Handling

If an error occurs while making a request to the dispenser API, an exception will be raised with a message indicating the type of error. Refer to Error Handling docs for details on how you can handle each individual error code.