fathom-sdk
TypeScript icon, indicating that this package has built-in type declarations

0.1.56 • Public • Published

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 ethers@5.7.2


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.

Readme

Keywords

none

Package Sidebar

Install

npm i fathom-sdk

Weekly Downloads

38

Version

0.1.56

License

ISC

Unpacked Size

48.4 MB

Total Files

270

Last publish

Collaborators

  • tshrma
  • vitalii.koval
  • vitalii47
  • into-the-fathom