@float-packages/rescript-client

1.0.1 • Public • Published

Rescript and Javascript library for Float

This library is used to interact with the Float smart contracts, which can also be accessed via the DApp: https://float.capital

Can view the contract addresses and other config here: https://github.com/Float-Capital/config Can read the docs here: https://docs.float.capital/

Getting started

All numeric parameters and return values are in BigNumber form (18 decimals) except for these params:

  • marketIndex
  • txOptions

Rescript

To install run yarn add @float-capital/rescript-client or npm install @float-capital/rescript-client and then add the following to your bsconfig.json:

  "bs-dependencies": [
    "@float-capital/js-client",
    "@float-capital/config"
  ],

Here are some examples of how to use the library:

// readonly chain initialization
let chain = Float.Chain.WithProvider.makeDefault(chainId)
// or
let chain = provider->Float.Chain.WithProvider.make

let marketIndex = 1

// readonly market initialization
let market = provider->Float.Market.WithProvider.make(marketIndex)
// or
let market = chain->Float.Market.makeUsingChain(marketIndex)

// readonly function call
market
->Float.Market.fundingRateMultiplier
->Promise.thenResolve(multiplier =>
  j`Funding rate multiplier for market $marketIndex:`
  ->Js.log2(multiplier)
)
->ignore

let isLong = true

// writable market side initialization
let side = wallet->Float.MarketSide.WithWallet.make(marketIndex, isLong)

// this is manual for now
let txOptions: Float.txOptions = {
  maxFeePerGas: 62, // gwei
  maxPriorityFeePerGas: 34, // gwei
  gasLimit: 1_000_000, // units
}

// write function call
side
->Float.MarketSide.mint(1->convertToBigNumber, txOptions)
->Promise.thenResolve(tx => tx.hash->Js.log)
->ignore

Javascript

Since the JS is generated from the rescript it is not as idiomatic as one would like. This will be improved on in subsequent versions but for now this is how it works:

// initialization
var Market = require("@float-packages/rescript-client/src/Float__Market.js");
var marketIndex = 1
var market = Market.WithProvider.make(provider, marketIndex);

// read only function call
Market.fundingRateMultiplier(market).then(function (multiplier) {
  console.log("Funding rate multiplier for market " + marketIndex + ":", multiplier);
});

// write function call
var Chain = require("@float-packages/rescript-client/src/Float__Chain.js");
Chain.WithWallet.make(wallet);
var market = Market.WithWallet.makeUnwrapped(wallet, marketIndex);
Market.settleOutstandingActions(market, undefined, txOptions).then(function (tx) {
  console.log(tx.hash);
});

Full list of APIs

Float.Chain.contracts // read
Float.Chain.updateSystemStateMulti // write

// read
Float.Market.contracts
Float.Market.unsettledPositions
Float.Market.stakedPositions
Float.Market.positions
Float.Market.fundingRateAprs
Float.Market.unconfirmedExposures
Float.Market.exposures
Float.Market.leverage
Float.Market.fundingRateMultiplier
Float.Market.syntheticTokenPrices

// write
Float.Market.updateSystemState
Float.Market.settleOutstandingActions
Float.Market.claimFloatCustom

// read
Float.MarketSide.syntheticToken
Float.MarketSide.name
Float.MarketSide.poolValue
Float.MarketSide.syntheticTokenPrice
Float.MarketSide.exposure
Float.MarketSide.unconfirmedExposure
Float.MarketSide.fundingRateApr
Float.MarketSide.positions
Float.MarketSide.stakedPositions
Float.MarketSide.unsettledPositions

// write
Float.MarketSide.mint
Float.MarketSide.mintAndStake
Float.MarketSide.stake
Float.MarketSide.unstake
Float.MarketSide.redeem
Float.MarketSide.shift
Float.MarketSide.shiftStake

/@float-packages/rescript-client/

    Package Sidebar

    Install

    npm i @float-packages/rescript-client

    Weekly Downloads

    1

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    109 kB

    Total Files

    20

    Last publish

    Collaborators

    • stentonian