Signers Package

The StakeKit Signers is a package that allows you to create a signing wallet instance from a mnemonic phrase or Ledger app and sign transactions.

In addition to that, you can provide a custom derivation path for your mnemonic phrase and get different wallets derived from it, from different types of wallet mechanisms, such as MetaMask, Omni, Phantom, or Keplr.

Supported Networks

We currently support the following networks:

  • Avalanche-C
  • Avalanche-C Atomic
  • Avalanche-P
  • Arbitrum
  • Binance
  • BinanceBeacon
  • Celo
  • Ethereum
  • Ethereum Goerli
  • Fantom
  • Harmony
  • Optimism
  • Polygon
  • Akash
  • Axelar
  • Cosmos
  • Juno
  • Kava
  • Onomy
  • Osmosis
  • Stargaze
  • Near
  • Persistence
  • Quicksilver
  • Solana
  • Tezos

Supported Wallets

We currently support:

  • MetaMask
  • Omni
  • Phantom
  • Keplr
  • SteakWallet
  • Temple

Development

Create .env file and add variables from .env.example.

Install all dependencies:

yarn install

Installation

To install StakeKit Signers (in addition, we recommend installing the packages @stakekit/common):

npm install @stakekit/signers @stakekit/common

or

yarn add @stakekit/signers @stakekit/common

or

pnpm add @stakekit/signers @stakekit/common

Usage

Examples

Ethereum

const walletoptions = {  
  mnemonic: process.env.MNEMONIC,  
  walletType: ImportableWallets.MetaMask,  
  index: 0,  
};

const signingWallet = await getSigningWallet(Networks.Ethereum, walletoptions);  
const address = await signingWallet.getAddress();

console.log('My wallet address: ', address);

const someUnsignedTx: TransactionRequest = {}; // Your unsigned transaction.

const signedTx = await wallet.signTransaction(unsignedTransaction);

// submitTransaction(signedTx);\`\`

Solana

import { ImportableWallets, getSigningWallet } from '@stakekit/signers';
import { Networks } from '@stakekit/common';

const walletoptions = {
  mnemonic: process.env.MNEMONIC,
  walletType: ImportableWallets.MetaMask,
  index: 0,
};

const signingWallet = await getSigningWallet(Networks.Solana, walletoptions);
const address = await signingWallet.getAddress();

console.log('My wallet address: ', address);

const someUnsignedTx: string = ''; // Your unsigned transaction in hex.

const signedTx = await wallet.signTransaction(unsignedTransaction);

// submitTransaction(signedTx);