GEB Docs
  • Introduction to GEB
  • Community Resources
  • FLX Mechanics
  • FAQ
  • RAI
    • RAI Use-Cases
    • Multi-chain RAI
    • RAI Integrations
  • The Money God League
    • Intro to The League
  • Ungovernance
    • Governance Minimization Guide
  • Risk
    • GEB Risks
    • PID Failure Modes & Responses
  • Incentives
    • RAI Uniswap V2 Mint + LP Incentives Program
    • RAI Uniswap V3 Mint + LP Incentives Program (Inactive)
    • FLX Staking
    • RAI / ETH Uniswap V3 Oracle LP Incentives Program
  • Contract Variables Translation
    • Core Contracts Naming Transition
    • Governance Contracts Naming Transition
    • SAFE Management Contract Naming Transition
  • System Contracts
    • Core Module
      • SAFE Engine
      • Liquidation Engine
      • Accounting Engine
    • Auction Module
      • English Collateral Auction House
      • Fixed Discount Collateral Auction House
      • Increasing Discount Collateral Auction House
      • Debt Auction House
      • Surplus Auction House
    • Oracle Module
      • Oracle Relayer
      • Medianizer
        • DSValue
        • Governance Led Median
        • Chainlink Median
        • Uniswap V2 Median
      • FSM
        • Oracle Security Module
        • Dampened Security Module
        • FSM Governance Interface
    • Token Module
      • Token Adapters
      • System Coin
      • Protocol Token
      • Protocol Token Authority
      • Protocol Token Printing Permissions
    • Money Market Module
      • Tax Collector
    • Sustainability Module
      • Stability Fee Treasury
      • FSM Wrapper
      • Increasing Treasury Reimbursement
      • Mandatory Fixed Treasury Reimbursement
      • Increasing Reward Relayer
    • Automation Module
      • Collateral Auction Throttler
      • Single Spot Debt Ceiling Setter
      • ESM Threshold Setter
    • Governance Module
      • DSPause
    • Shutdown Module
      • Global Settlement
      • ESM
  • Proxy Infrastructure
    • DSProxy
    • Proxy Registry
  • Helper Contracts
    • SAFE Manager
  • GEB.js
    • Getting Started
    • Global Settlement Guide
    • API Reference
      • Geb
      • Safe
      • Proxy Actions
      • Geb Admin
  • APIs
    • API Endpoints
  • Pyflex
    • Getting Started
      • Configuration
      • GEB Basics
    • SAFE Management
      • Opening a SAFE
      • Closing a SAFE
    • Numerics
  • Keepers
    • Keeper Overview
    • Collateral Auction Keeper
      • Running in Docker
      • Running on a Host
      • Liquidations & Collateral Auctions
      • Collateral Auction Flash Swaps
    • Debt Auction Keeper
      • Running in Docker
      • Running on a Host
    • Staked Token Auction Keeper
      • Running in Docker
      • Running on a Host
    • Surplus Auction Keeper
      • Running in Docker
      • Running on a Host
    • Bidding Models
  • Liquidation Protection
    • SAFE Protection
    • Liquidation Protection Guide
    • Uni-V2 RAI/ETH Savior Details
    • Curve V1 Savior Details
Powered by GitBook
On this page
  • Constructors
  • Properties
  • contracts
  • Methods
  • deployProxy
  • getErc20Contract
  • getGebContract
  • getIncentiveCampaignContract
  • getProxyAction
  • getSafe
  • getSafeFromOwner
  • multiCall
  • Static getGebContract

Was this helpful?

  1. GEB.js
  2. API Reference

Geb

PreviousAPI ReferenceNextSafe

Last updated 4 years ago

Was this helpful?

The main package used to interact with the GEB system. Includes for safe management and the to directly call smart contracts.

Constructors

+ new Geb(network: GebDeployment, provider: GebProviderInterface | Provider):

Defined in

Constructor of the main Geb.js object.

Parameters:

Name

Type

Description

network

GebDeployment

Either 'kovan', 'mainnet' or an actual list of contract addresses.

provider

GebProviderInterface | Provider

Either a Ethers.js provider or a Geb provider (Soon support for Web3 will be added)

Returns:

Properties

contracts

• contracts: ContractApis

Defined in

Object containing all GEB core smart-contracts instances for direct level interactions. All of the following contracts object are one-to-one typed API to the underlying smart-contract. Read-only functions that do not change the blockchain state return a promise of the return data. State modifying function will return synchronously a pre-filled transaction request object:

{
  to: "0x123abc.."
  data: "0xabab234ab..."
}

Example:

 // Setup geb.js an ethers
 const provider = new ethers.providers.JsonRpcProvider('http://kovan.infura.io/<API KEY>')
 const wallet = new ethers.Wallet('<Private key>', provider)
 const geb = new Geb('kovan', provider)

 // Contract read function: Fetch the debt ceiling
 const debtCeiling = await geb.contracts.safeEngine.globalDebtCeiling()

 // State changing function: manualy liquidate a SAFE
 const tx = geb.contracts.liquidationEngine.liquidateSAFE(ETH_A, '0x1234abc...')
 await wallet.sendTransaction(tx) // Send the Ethereum transaction

Currently the following contracts are available:

  • SAFEEngine

  • AccountingEngine

  • TaxCollector

  • LiquidationEngine

  • OracleRelayer

  • GlobalSettlement

  • DebtAuctionHouse

  • PreSettlementSurplusAuctionHouse

  • PostSettlementSurplusAuctionHouse

  • SettlementSurplusAuctioneer

  • GebSafeManager

  • GetSafes

  • BasicCollateralJoin

  • CoinJoin

  • Coin (System coin ERC20 contract)

  • GebProxyRegistry

  • FixedDiscountCollateralAuctionHouse

  • Weth (ERC20)

Methods

deployProxy

▸ deployProxy(): TransactionRequest

Deploy a new proxy owned by the sender.

Returns: TransactionRequest

getErc20Contract

▸ getErc20Contract(tokenAddress: string): Erc20

Returns an object that can be used to interact with a ERC20 token. Example:

const USDCAddress = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
const USDC = geb.getErc20Contract(USDCAddress)

// Get 0xdefiisawesome's balance
const balance = USDC.balanceOf("0xdefiisawesome..")

// Send 1 USDC to 0xdefiisawesome (USDC has 6 decimals)
const tx = USDC.transfer("0xdefiisawesome..", "1000000")
await wallet.sendTransaction(tx)

Parameters:

Name

Type

Description

tokenAddress

string

Token contract address

Returns: Erc20

Erc20

getGebContract

▸ getGebContract‹T›(gebContractClass: GebContractAPIConstructorInterface‹T›, address: string): T

Returns an instance of a specific geb contract given a Geb contract API class at a specified address

import { contracts } from "geb.js"
const safeEngine = geb.getGebContract(contracts.SafeEngine, "0xabcd123..")
const globalDebt = safeEngine.globalDebt()

Type parameters:

▪ T: BaseContractAPI

Parameters:

Name

Type

Description

gebContractClass

GebContractAPIConstructorInterface‹T›

Class from contracts or adminContracts

address

string

Contract address of the instance

Returns: T

getIncentiveCampaignContract

▸ getIncentiveCampaignContract(campaignNumber: number): Promise‹StakingRewards‹››

Help function to get the contract object of an incentive campaign given its number ID

Parameters:

Name

Type

Description

campaignNumber

number

incremental ID of the campaign

Returns: Promise‹StakingRewards‹››

StakingRewards

getProxyAction

Parameters:

Name

Type

Description

ownerAddress

string

Externally owned user account, Ethereum address that owns a GEB proxy.

getSafe

Get the SAFE object given a safeManager id or a safeEngine handler address.

Parameters:

Name

Type

Description

idOrHandler

string | number

Safe Id or SAFE handler

collateralType?

string

-

getSafeFromOwner

Fetch the list of safes owned by an address. This function will fetch safes owned directly through the safeManager and safes owned through the safe manager through a proxy. Safes owned directly by the address at the safeEngine level won't appear here.

Note that this function will make a lot of network calls and is therefore very slow. For front-ends we recommend using pre-indexed data such as the geb-subgraph.

Parameters:

Name

Type

Description

address

string

multiCall

▸ multiCall‹O1, O2, O3›(calls: [MulticallRequest‹O1›, MulticallRequest‹O2›, MulticallRequest‹O3›]): Promise‹[O1, O2, O3]›

Bundles several read only GEB contract call into 1 RPC single request. Useful for front-ends or apps that need to fetch many parameters from the contracts but want to minimize the network request and the load on the underlying Ethereum node. The function takes as input an Array of GEB view contract calls. IMPORTANT: You have to set the multicall parameter of the contract function to true, it is the always the last parameter of the function. Multicall works for all contracts in the Geb.contracts and can be use with any contract that inherit the BaseContractApi. Note that it does not support non-view calls (Calls that require to pay gas and change the state of the blockchain).

Example:

import { ethers } from "ethers"
import { Geb } from "geb.js"

const provider = new ethers.providers.JsonRpcProvider("http://kovan.infura.io/...")
const geb = new Geb("kovan", provider);

const [ globalDebt, collateralInfo ] = await geb.multiCall([
    geb.contracts.safeEngine.globalDebt(true), // !! Note the last parameter set to true.
    geb.contracts.safeEngine.collateralTypes(ETH_A, true),
])

console.log(`Current global debt: ${globalDebt.toString()}`)
console.log(`Current ETH_A debt: ${collateralInfo.debtAmount}`)

Type parameters:

▪ O1

▪ O2

▪ O3

Parameters:

Name

Type

Description

calls

[MulticallRequest‹O1›, MulticallRequest‹O2›, MulticallRequest‹O3›]

Call a read only GEB contract function. The GEB contract object needs to be called with the parameter multicall set to true as seen in the example above.

Returns: Promise‹[O1, O2, O3]›

Promise Array with the result from their respective requests.

Static getGebContract

▸ getGebContract‹T›(gebContractClass: GebContractAPIConstructorInterface‹T›, address: string, provider: GebProviderInterface | Provider): T

Returns an instance of a specific geb contract given Geb contract API class constructor at a specified address

Type parameters:

▪ T: BaseContractAPI

Parameters:

Name

Type

Description

gebContractClass

GebContractAPIConstructorInterface‹T›

Class from contracts or adminContracts

address

string

Contract address of the instance

provider

GebProviderInterface | Provider

Either a Ethers.js provider or a Geb provider

Returns: T

This object follow the (Also similar to the ). The object can be completed with properties such as from, gasPrice, gas (gas limit, web3.js ony) or gasLimit (gas limit, ethers.js only). The object can then be passed to the sendTransaction of or

For detailed information about the functions of each contract we recommend referring directly to the smart contract and .

Defined in

Defined in

Defined in

Defined in

▸ getProxyAction(ownerAddress: string): Promise‹‹››

Defined in

Given an address returns a GebProxyActions object to execute bundled operations. Important: This requires the address to have deployed a GEB proxy through the proxy registry contract. It will throw a DOES_NOT_OWN_HAVE_PROXY error if the address specified does not have a proxy. Use the function to get a new proxy.

Returns: Promise‹‹››

▸ getSafe(idOrHandler: string | number, collateralType?: string): Promise‹›

Defined in

Returns: Promise‹›

▸ getSafeFromOwner(address: string): Promise‹[]›

Defined in

Returns: Promise‹[]›

Defined in

Defined in

TransactionRequest model of ethers.js
model used by web.js
ehters.js
web3.js
code
documentation
packages/geb/src/geb.ts:133
packages/geb/src/geb.ts:261
packages/geb/src/geb.ts:387
packages/geb/src/geb.ts:271
GebProxyActions
packages/geb/src/geb.ts:121
GebProxyActions
Safe
packages/geb/src/geb.ts:141
Safe
Safe
packages/geb/src/geb.ts:224
Safe
packages/geb/src/geb.ts:293
packages/geb/src/geb.ts:355
Geb
packages/geb/src/geb.ts:89
Geb
packages/geb/src/geb.ts:87
helper functions
contract interface object
deployProxy