diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b3d8b0..e4f956e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,3 +8,4 @@ - Implemented functionality to get coin balance for a wallet - Implemented functionality to get gass fees - Implemented functionality to broadcast a transaction +- Implemented Readme diff --git a/README.md b/README.md index 07f12bb..151ed7b 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,111 @@ -# vault-rootstock-controller -Rootstock controller for safle vault +# vault-rootstock-controller + +[![npm version](https://badge.fury.io/js/@getsafle%2Fvault-rootstock-controller.svg)](https://badge.fury.io/js/@getsafle%2Fvault-rootstock-controller) Static Badge [![Discussions][discussions-badge]][discussions-link] +Static Badge + +A Module written in javascript for managing various keyrings of rootstock accounts, encrypting them, and using them. This repository contains `rootstockHdKeyring` class to create **rootstock wallet** from **Safle Vault**. + +- [Installation](#installation) +- [Initialize the rootstock Controller class](#initialize-the-rootstock-controller-class) +- [Methods](#methods) + - [Generate Keyring with 1 account and encrypt](#generate-keyring-with-1-account-and-encrypt) + - [Restore a keyring with the first account using a mnemonic](#restore-a-keyring-with-the-first-account-using-a-mnemonic) + - [Add a new account to the keyring object](#add-a-new-account-to-the-keyring-object) + - [Export the private key of an address present in the keyring](#export-the-private-key-of-an-address-present-in-the-keyring) + - [Sign a transaction](#sign-a-transaction) + - [Sign a message](#sign-a-message) + - [Get balance](#get-balance) + +## Installation + +`npm install --save @getsafle/vault-rootstock-controller` + +## Initialize the rootstock Controller class + +``` +const { KeyringController, getBalance } = require('@getsafle/vault-rootstock-controller'); + +const rootstockController = new KeyringController({ + encryptor: { + // An optional object for defining encryption schemes: + // Defaults to Browser-native SubtleCrypto. + encrypt(password, object) { + return new Promise('encrypted!'); + }, + decrypt(password, encryptedString) { + return new Promise({ foo: 'bar' }); + }, + }, +}); +``` + +## Methods + +### Generate Keyring with 1 account and encrypt + +``` +const keyringState = await rootstockController.createNewVaultAndKeychain(password); +``` + +### Restore a keyring with the first account using a mnemonic + +``` +const keyringState = await rootstockController.createNewVaultAndRestore(password, mnemonic); +``` + +### Add a new account to the keyring object + +``` +const keyringState = await rootstockController.addNewAccount(keyringObject); +``` + +### Export the private key of an address present in the keyring + +``` +const privateKey = await rootstockController.exportAccount(address); +``` + +### Sign a transaction + +``` +const signedTx = await rootstockController.signTransaction(rootstockTx, _fromAddress); +``` + +### Sign a message + +``` +const signedMsg = await rootstockController.signMessage(msgParams); +``` + +### Sign a message + +``` +const signedObj = await rootstockController.sign(msgParams, pvtKey, web3Obj); +``` + +### Sign Typed Data (EIP-712) + +``` +const signedData = await rootstockController.signTypedMessage(msgParams); +``` + +### Get balance + +``` +const balance = await rootstockController.getBalance(address, web3); +``` + +### Send Transaction + +``` +const receipt = await rootstockController.sendTransaction(signedTx, web3); +``` + +### Calculate Tx Fees + +``` +const fees = await rootstockController.getFees(rawTx, web3); +``` + +[discussions-badge]: https://img.shields.io/badge/Code_Quality-passing-rgba +[discussions-link]: https://github.com/getsafle/vault-rootstock-controller/actions