# List of contract interface

**URL:** <https://forum.sun.io/t/list-of-contract-interface/33>\
**Category:** Swap\
**Created:** [May 22, 2024, 4:38am UTC](https://forum.sun.io/t/list-of-contract-interface/33 "2024-05-22T04:38:13Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![sunio](https://avatars.discourse-cdn.com/v4/letter/s/77aa72/32.png) [@sunio](https://forum.sun.io/u/sunio)\
**Post date:** [May 22, 2024, 4:38am UTC](https://forum.sun.io/t/list-of-contract-interface/33/1 "2024-05-22T04:38:13Z")

</div>

**1 TRC20 Token**  
interface ITRC20 {  
function transfer(address to, uint256 value) external returns (bool);  
function approve(address spender, uint256 value) external returns (bool);  
function transferFrom(address from, address to, uint256 value) external returns (bool);  
function totalSupply() external view returns (uint256);  
function balanceOf(address who) external view returns (uint256);  
function allowance(address owner, address spender) external view returns (uint256);  
event Transfer(address indexed from, address indexed to, uint256 value);  
event Approval(address indexed owner, address indexed spender, uint256 value);  
}  
**2 Factory**  
interface ISunswapFactory {  
event NewExchange(address indexed token, address indexed exchange);  
function initializeFactory(address template) external;  
function createExchange(address token) external returns (address payable);  
function getExchange(address token) external view returns (address payable);  
function getToken(address token) external view returns (address);  
function getTokenWihId(uint256 token\_id) external view returns (address);  
}  
**3 Exchange**  
interface ISunswapExchange {  
event TokenPurchase(address indexed buyer, uint256 indexed trx\_sold, uint256 indexed  
tokens\_bought);  
event TrxPurchase(address indexed buyer, uint256 indexed tokens\_sold, uint256  
indexed trx\_bought);  
event AddLiquidity(address indexed provider, uint256 indexed trx\_amount, uint256  
indexed token\_amount);  
event RemoveLiquidity(address indexed provider, uint256 indexed trx\_amount, uint256  
indexed token\_amount);  
function () external payable;  
function getInputPrice(uint256 input\_amount, uint256 input\_reserve, uint256  
output\_reserve) external view returns (uint256);  
function getOutputPrice(uint256 output\_amount, uint256 input\_reserve, uint256  
output\_reserve) external view returns (uint256);  
function trxToTokenSwapInput(uint256 min\_tokens, uint256 deadline) external payable  
returns (uint256);  
function trxToTokenTransferInput(uint256 min\_tokens, uint256 deadline, address  
recipient) external payable returns(uint256);  
function trxToTokenSwapOutput(uint256 tokens\_bought, uint256 deadline) external  
payable returns(uint256);  
function trxToTokenTransferOutput(uint256 tokens\_bought, uint256 deadline, address  
recipient) external payable returns (uint256);  
function tokenToTrxSwapInput(uint256 tokens\_sold, uint256 min\_trx, uint256 deadline)  
external returns (uint256);  
function tokenToTrxTransferInput(uint256 tokens\_sold, uint256 min\_trx, uint256  
deadline, address recipient) external returns (uint256);  
function tokenToTrxSwapOutput(uint256 trx\_bought, uint256 max\_tokens, uint256  
deadline) external returns (uint256);  
function tokenToTrxTransferOutput(uint256 trx\_bought, uint256 max\_tokens, uint256  
deadline, address recipient) external returns (uint256);  
function tokenToTokenSwapInput(uint256 tokens\_sold, uint256 min\_tokens\_bought,  
uint256 min\_trx\_bought, uint256 deadline, address token\_addr) external returns (uint256);  
function tokenToTokenTransferInput(uint256 tokens\_sold, uint256 min\_tokens\_bought,  
uint256 min\_trx\_bought, uint256 deadline, address recipient, address token\_addr) external  
returns (uint256);  
function tokenToTokenSwapOutput(uint256 tokens\_bought, uint256 max\_tokens\_sold,  
uint256 max\_trx\_sold, uint256 deadline, address token\_addr) external returns (uint256);  
function tokenToTokenTransferOutput(uint256 tokens\_bought, uint256 max\_tokens\_sold,  
uint256 max\_trx\_sold, uint256 deadline, address recipient, address token\_addr) external  
returns (uint256);  
function tokenToExchangeSwapInput(uint256 tokens\_sold, uint256 min\_tokens\_bought,  
uint256 min\_trx\_bought, uint256 deadline, address exchange\_addr) external returns  
(uint256);  
function tokenToExchangeTransferInput(uint256 tokens\_sold, uint256  
min\_tokens\_bought, uint256 min\_trx\_bought, uint256 deadline, address recipient, address  
exchange\_addr) external returns (uint256);  
function tokenToExchangeSwapOutput(uint256 tokens\_bought, uint256  
max\_tokens\_sold, uint256 max\_trx\_sold, uint256 deadline, address exchange\_addr)  
external returns (uint256);  
function tokenToExchangeTransferOutput(uint256 tokens\_bought, uint256  
max\_tokens\_sold, uint256 max\_trx\_sold, uint256 deadline, address recipient, address  
exchange\_addr) external returns (uint256);  
function getTrxToTokenInputPrice(uint256 trx\_sold) external view returns (uint256);  
function getTrxToTokenOutputPrice(uint256 tokens\_bought) external view returns  
(uint256);  
function getTokenToTrxInputPrice(uint256 tokens\_sold) external view returns (uint256);  
function getTokenToTrxOutputPrice(uint256 trx\_bought) external view returns (uint256);  
function tokenAddress() external view returns (address);  
function factoryAddress() external view returns (address);  
function addLiquidity(uint256 min\_liquidity, uint256 max\_tokens, uint256 deadline)  
external payable returns (uint256);  
function removeLiquidity(uint256 amount, uint256 min\_trx, uint256 min\_tokens, uint256  
deadline) external returns (uint256, uint256);  
}
