# `Ethers.Contracts.ERC20`
[🔗](https://github.com/ExWeb3/elixir_ethers/blob/v0.6.12/lib/ethers/contracts/erc20.ex#L1)

ERC20 token interface

More info: https://ethereum.org/en/developers/docs/standards/tokens/erc-20/

# `__default_address__`

```elixir
@spec __default_address__() :: nil
```

Default address of the contract. Returns `nil` if not specified.

To specify a default address see `Ethers.Contract`

# `allowance`

```elixir
@spec allowance(Ethers.Types.t_address(), Ethers.Types.t_address()) ::
  Ethers.TxData.t()
```

Prepares `allowance(address owner, address spender)` call parameters on the contract.

This function should only be called for result and never in a transaction on its own. (Use `Ethers.call/2`)

State mutability: `view`

## Function Parameter Types
 - owner: `:address`
 - spender: `:address`

## Return Types (when called with `Ethers.call/2`)
 - `{:uint, 256}`

# `approve`

```elixir
@spec approve(Ethers.Types.t_address(), non_neg_integer()) :: Ethers.TxData.t()
```

Prepares `approve(address spender, uint256 value)` call parameters on the contract.

This function can be used for a transaction or additionally called for results (Use `Ethers.send_transaction/2`).
No amount of Ether can be sent with this function.

State mutability: `non_payable`

## Function Parameter Types
 - spender: `:address`
 - value: `{:uint, 256}`

## Return Types (when called with `Ethers.call/2`)
 - `:bool`

# `balance_of`

```elixir
@spec balance_of(Ethers.Types.t_address()) :: Ethers.TxData.t()
```

Prepares `balanceOf(address account)` call parameters on the contract.

This function should only be called for result and never in a transaction on its own. (Use `Ethers.call/2`)

State mutability: `view`

## Function Parameter Types
 - account: `:address`

## Return Types (when called with `Ethers.call/2`)
 - `{:uint, 256}`

# `constructor`

```elixir
@spec constructor() :: binary()
```

Prepares contract constructor values for deployment.

To deploy a contracts use `Ethers.deploy/2` and pass the result of this function as
`:encoded_constructor` option.

## Parameters

# `decimals`

```elixir
@spec decimals() :: Ethers.TxData.t()
```

Prepares `decimals()` call parameters on the contract.

This function should only be called for result and never in a transaction on its own. (Use `Ethers.call/2`)

State mutability: `view`

## Return Types (when called with `Ethers.call/2`)
 - `{:uint, 8}`

# `name`

```elixir
@spec name() :: Ethers.TxData.t()
```

Prepares `name()` call parameters on the contract.

This function should only be called for result and never in a transaction on its own. (Use `Ethers.call/2`)

State mutability: `view`

## Return Types (when called with `Ethers.call/2`)
 - `:string`

# `symbol`

```elixir
@spec symbol() :: Ethers.TxData.t()
```

Prepares `symbol()` call parameters on the contract.

This function should only be called for result and never in a transaction on its own. (Use `Ethers.call/2`)

State mutability: `view`

## Return Types (when called with `Ethers.call/2`)
 - `:string`

# `total_supply`

```elixir
@spec total_supply() :: Ethers.TxData.t()
```

Prepares `totalSupply()` call parameters on the contract.

This function should only be called for result and never in a transaction on its own. (Use `Ethers.call/2`)

State mutability: `view`

## Return Types (when called with `Ethers.call/2`)
 - `{:uint, 256}`

# `transfer`

```elixir
@spec transfer(Ethers.Types.t_address(), non_neg_integer()) :: Ethers.TxData.t()
```

Prepares `transfer(address to, uint256 value)` call parameters on the contract.

This function can be used for a transaction or additionally called for results (Use `Ethers.send_transaction/2`).
No amount of Ether can be sent with this function.

State mutability: `non_payable`

## Function Parameter Types
 - to: `:address`
 - value: `{:uint, 256}`

## Return Types (when called with `Ethers.call/2`)
 - `:bool`

# `transfer_from`

```elixir
@spec transfer_from(
  Ethers.Types.t_address(),
  Ethers.Types.t_address(),
  non_neg_integer()
) ::
  Ethers.TxData.t()
```

Prepares `transferFrom(address from, address to, uint256 value)` call parameters on the contract.

This function can be used for a transaction or additionally called for results (Use `Ethers.send_transaction/2`).
No amount of Ether can be sent with this function.

State mutability: `non_payable`

## Function Parameter Types
 - from: `:address`
 - to: `:address`
 - value: `{:uint, 256}`

## Return Types (when called with `Ethers.call/2`)
 - `:bool`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
