ATM Deposits & Withdrawals
Integrate the Teller protocol liquidity pool into your application
As part of the Teller protocol, depositors provide liquidity to decentralized, non-custodial markets (aka ATM's) to earn passive income. Assets within the ATM can be borrowed fully unsecured (bank connection) or secured (greater than 20% collateral).
Developers may wish to build out applications that integrate with these liquidity pools. In order to allow users to deposit or withdraw their assets into the pool, the developer's application must call the functions located in the lending pool smart contract.
deposit()
function deposit( uint256 amount )
amount
represents the amount of an asset that a user wished to deposit into the liquidity pool.
Parameter Name
Type
Description
amount
uint256
The amount to be deposited
Upon depositing assets to the protocol, tTokens -- representing proof of deposit -- are minted and given to the depositor in exchange.

/* Interfaces */
import "@teller-protocol-v1/contracts/interfaces/LendingPoolInterface.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
/* Retrieve contract */
LendingPoolInterface public lendingPool;
lendingPool = LendingPoolInterface(address("0x36633E18592e30eDfC7ffe1FD4B5EA7BA21ac20E")); // Ropsten address
/* Approve LendingPool to move user's funds */
address usdc = address("0x20572e4c090f15667cf7378e16fad2ea0e2f3eff"); // Ropsten address
uint256 amount = 1000;
IERC20(usdc).approve(lendingPool.address, amount, { from: user });
/* Deposit user funds into lending pool */
lendingPool.deposit(amount, { from:user });
withdraw()
function withdraw( uint256 amount )
Contrary to the deposit() method and as the function's name suggests, amount
here represents the amount of an asset that a user wished to withdraw from the liquidity pool.
Parameter Name
Type
Description
amount
uint256
The amount to be withdrawn
When the user initiates the withdraws their assets, the tTokens which were given to the user previously as a proof of deposit are burned and their assets subsequently sent to their wallet address.

/* Interfaces */
import "@teller-protocol-v1/contracts/interfaces/LendingPoolInterface.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
/* Retrieve contract */
LendingPoolInterface public lendingPool;
lendingPool = LendingPoolInterface(address("0x36633E18592e30eDfC7ffe1FD4B5EA7BA21ac20E)); // Ropsten address
/* Deposit user funds into lending pool */
lendingPool.withdraw(amount, { from:user });
Last updated
Was this helpful?