Skip to main content

Integration

Before you read on, make sure you have already read the smart contract docs, where the role of each smart contract is explained.

note

This page is a work-in-progress.

Contract interfaces

This section lists relevant contract entrypoints for integration purposes.

note

This section is a work-in-progress. Individual entrypoints and parameters will be documented soon.

Market contract

IMarket.cairo
%lang starknet

struct ReserveData {
enabled: felt,
decimals: felt,
z_token_address: felt,
interest_rate_model: felt,
collateral_factor: felt,
borrow_factor: felt,
reserve_factor: felt,
last_update_timestamp: felt,
lending_accumulator: felt,
debt_accumulator: felt,
current_lending_rate: felt,
current_borrowing_rate: felt,
raw_total_debt: felt,
flash_loan_fee: felt,
liquidation_bonus: felt,
}

namespace IMarket {
//
// @view entrypoints
//

func get_reserve_data(token: felt) -> (data: ReserveData) {
}

func get_lending_accumulator(token: felt) -> (res: felt) {
}

func get_debt_accumulator(token: felt) -> (res: felt) {
}

func get_pending_treasury_amount(token: felt) -> (res: felt) {
}

func get_total_debt_for_token(token: felt) -> (debt: felt) {
}

func get_user_debt_for_token(user: felt, token: felt) -> (debt: felt) {
}

func get_user_flags(user: felt) -> (map: felt) {
}

func is_user_undercollateralized(user: felt, apply_borrow_factor: felt) -> (
is_undercollateralized: felt
) {
}

func is_collateral_enabled(user: felt, token: felt) -> (enabled: felt) {
}

func user_has_debt(user: felt) -> (has_debt: felt) {
}

//
// @external entrypoints
//

func deposit(token: felt, amount: felt) {
}

func withdraw(token: felt, amount: felt) {
}

func withdraw_all(token: felt) {
}

func borrow(token: felt, amount: felt) {
}

func repay(token: felt, amount: felt) {
}

func repay_all(token: felt) {
}

func enable_collateral(token: felt) {
}

func disable_collateral(token: felt) {
}

func liquidate(user: felt, debt_token: felt, amount: felt, collateral_token: felt) {
}
}

ZToken contract

IZToken.cairo
%lang starknet

from starkware.cairo.common.uint256 import Uint256

namespace IZToken {
//
// @view entrypoints
//

func name() -> (name: felt) {
}

func symbol() -> (symbol: felt) {
}

func decimals() -> (decimals: felt) {
}

func totalSupply() -> (total_supply: Uint256) {
}

func felt_total_supply() -> (total_supply: felt) {
}

func balanceOf(account: felt) -> (balance: Uint256) {
}

func felt_balance_of(account: felt) -> (balance: felt) {
}

func allowance(owner: felt, spender: felt) -> (remaining: Uint256) {
}

func felt_allowance(owner: felt, spender: felt) -> (remaining: felt) {
}

func underlying_token() -> (token: felt) {
}

func get_raw_total_supply() -> (raw_supply: felt) {
}

//
// @external entrypoints
//

func transfer(recipient: felt, amount: Uint256) -> (success: felt) {
}

func felt_transfer(recipient: felt, amount: felt) -> (success: felt) {
}

func transferFrom(sender: felt, recipient: felt, amount: Uint256) -> (success: felt) {
}

func felt_transfer_from(sender: felt, recipient: felt, amount: felt) -> (success: felt) {
}

func approve(spender: felt, amount: Uint256) -> (success: felt) {
}

func felt_approve(spender: felt, amount: felt) -> (success: felt) {
}

func transfer_all(recipient: felt) {
}
}

Contract addresses

This section lists contracts deployed for each environment. Developers are advised to build and test their applications before actually deploying

Testnet

NameContractAddress
MarketMarket0x010fe9d5af7a51945d67e72167b57a856736a792b873407363f8ff81244c4bbb
zETH TokenZToken0x0493010f97914013ab2e17b12bfbfad2f5e104b6dd8f68c18952d5d1cd62d1d4
zUSDC TokenZToken0x05750d137cf618f1f6cdc1196105876ff391f09828cd253e63361d05477bc5b9
zWBTC TokenZToken0x078b7cee3cd62e2fbc843b17b141d175f58accc3a07d342859c9dce028ef91d6
zUSDT TokenZToken0x02b6d43887e85bc679de7d7de2ff3b4648d7188ec0b4d8bcf98df49b1b45744f
zDAI TokenZToken0x00a4ba9f677d49c58469d1ff6afa36bc6a927d24dcfd91c71fe3ae3ed74901dd