@dartroom/signer
v0.3.5-alpha
Published
A package that aggregates multiple Algorand signing options into one interface. Handles signing and address/login management.
Downloads
3
Keywords
Readme
signer
A package that aggregates multiple Algorand signing options into one interface. Handles signing and address/login management.
Integrates the following wallet apps:
Documenation
Installation
npm install @dartroom/signer
Setup
import { Wallet, Address } from '@dartroom/signer'
const wallet = new Wallet({
ledger: "MAINNET"
})
Options
ledger?: "MAINNET" | "TESTNET"
Some wallet apps require the specification of the network to use. (instead of reading the genesis hash from the transactions them selfs)
Connect
The Dartroom Signer does not have any UI built-in. All methods are designed to be integrated with your own UI.
When you want to connect to the users' wallet app, you first let them choose between the available options. AlgoSigner
, MyAlgo
and PeraWallet
are currently supported. The chosen options can be passed into the connectNewAddress
, triggering the wallet connection process.
const addresses = await wallet.connectNewAddress({ wallet: "PeraWallet" })
The return value is an array of one or more addresses, depending on how many the users selected.
type AddressList = Array<{
address: string
wallet: Wallets
}>
The package supports multiple connections to different wallet apps. The users can stay connected to all three supported wallets a the same time.
In cases where the users need to choose a single address, you can store this configuration with the setActive
function. This function will store the configuration in the LocalStorage of the browser.
The active wallet setting does not affect the signing of transactions. You can always sign transactions for any connect address, regardless of if it is the chosen one.
wallet.setActive({
address: "FSQW3UTLB5IZ32ZE35MUDPNNAXHCBGMGAKXHR3ENQ5JMT43IB3BET7WPDE",
wallet: "PeraWallet"
})
console.log(wallet.active) // { address: "FSQW3UTLB5IZ32ZE35MUDPNNAXHCBGMGAKXHR3ENQ5JMT43IB3BET7WPDE", wallet: "PeraWallet" }
Algon side storing the active wallet, the connect accounts and sessions are also stored. When you create a new instance of the Wallet
class, it will always try to restore the last session.
Sign transactions
const signedTxns = await wallet.signTransactions([
[
{
blob: [],
signers: ["FSQW3UTLB5IZ32ZE35MUDPNNAXHCBGMGAKXHR3ENQ5JMT43IB3BET7WPDE"]
},
]
])