@desync-labs/rasa-frontend-sdk
v0.0.2
Published
Package with methods for formatting data and executing transactions on the RASA protocol.
Downloads
45
Readme
@desync-labs/rasa-frontend-sdk
The @desync-labs/rasa-frontend-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 @desync-labs/rasa-frontend-sdk
// with yarn
yarn add @desync-labs/rasa-frontend-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,
StakingService,
VaultService,
// Interfaces
IPoolService,
IPositionService,
IProposalService,
IStakingService,
IVaultService,
} from 'rasa-sdk';
import { JsonRpcProvider } from '@ethersproject/providers';
/**
* Cache for contract instances.
*/
import { Web3Utils } from 'rasa-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;
proposalService: IProposalService;
stakingService: IStakingService;
vaultService: IVaultService;
chainId = DEFAULT_CHAIN_ID;
provider: JsonRpcProvider;
serviceList = [
'poolService',
'positionService',
'proposalService',
'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.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 RASA governance token and get revenue also get vRASA token which allow to create proposal and increase voting power.
- VaultService - Vault service for deposit assets and withdrawal.