npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

fathom-sdk

v0.1.56

Published

Package with methods for formatting data and executing transactions on the Fathom protocol.

Downloads

547

Readme

fathom-sdk

The fathom-sdk package offers a set of services which allow to interact with protocol smart contracts via rpc.

Installation

Install the package in your project directory with:

// with npm
npm install fathom-sdk

// with yarn
yarn add fathom-sdk

Compatibility

This library has a peer dependency of ethers.js JsonRpcProvider.

To install the correct version, run:

npm install [email protected]

Usage Example

Each Service require provider and chainId in constructor. Also, when provider or chainId changed need to pass new provider or chainId to service via setProvider and setChainId

Example of one main service RootService.

import {
  // Services
  PoolService,
  PositionService,
  ProposalService,
  StableSwapService,
  StakingService,
  VaultService,
  // Interfaces
  IPoolService,
  IPositionService,
  IProposalService,
  IStableSwapService,
  IStakingService,
  IVaultService,
} from 'fathom-sdk';
import { JsonRpcProvider } from "@ethersproject/providers";
/**
 * Cache for contract instances.
 */
import { Web3Utils } from 'fathom-sdk';
/**
 * Apothen Testnet, for Mainnet use 50.
 */
const DEFAULT_CHAIN_ID = 51;
/**
 * Read-only mode.
 * Use public RPC for read on-chain data.
 */
const getDefaultProvider = () => new JsonRpcProvider('https://erpc.apothem.network/');

export class RootService {
  /*
   * Services
   */
  poolService: IPoolService;
  positionService: IPositionService;
  stableSwapService: IStableSwapService;
  proposalService: IProposalService;
  stakingService: IStakingService;
  vaultService: IVaultService;

  chainId = DEFAULT_CHAIN_ID;

  provider: JsonRpcProvider;

  serviceList = [
    'poolService',
    'positionService',
    'proposalService',
    'stableSwapService',
    'stakingService',
    'vaultService',
  ];

  constructor() {
    this.provider = getDefaultProvider();

    this.poolService = new PoolService(this.provider, this.chainId);
    this.positionService = new PositionService(this.provider, this.chainId);
    this.proposalService = new ProposalService(this.provider, this.chainId);
    this.stakingService = new StakingService(this.provider, this.chainId);
    this.stableSwapService = new StableSwapService(this.provider, this.chainId);
    this.vaultService = new VaultService(this.provider, this.chainId);
  }

  /**
   * When chain id changed need to call this function.
   * @param chainId
   */
  setChainId(chainId: number) {
    this.chainId = chainId;
    /**
     * Pass chainId to services.
     */
    this.serviceList.forEach(serviceName => {
      this[serviceName].setChainId(chainId);
    });
  }

  /**
   * Provider is JsonRpcProvider provider instance
   * It can be JsonRpcProvider or WebSocketProvider or Web3Provider
   * @param provider
   */
  setProvider(provider: JsonRpcProvider) {
    this.provider = provider;
    /**
     * When change provider need to reset contracts cache.
     */
    Web3Utils.clearContracts();
    /**
     * Pass provider to services.
     */
    this.serviceList.forEach(serviceName => {
      this[serviceName].setProvider(provider);
    });
  }
}

Services List:

  • PoolService - helper functions for retrieve on-chain data for FXD pools, this service has no transaction methods.
  • PositionService - all methods for retrieve on-chain data about opened FXD positions, and transaction methods for manage positions.
  • ProposalService - DAO service for create proposals and vote for them.
  • StakingService - DAO service for stake FTHM governance token and get revenue also get vFTHM token which allow to create proposal and increase voting power.
  • StableSwapService - Swap methods for FXD/xUSDT pair. Available only for whitelisted wallets.
  • VaultService - Vault service for deposit assets and withdrawal.