import algosdk, { Transaction } from 'algosdk' import { Address } from './AlgorandTypes' import { SignCallback, TealSignCallback } from './Deployer' export class Signer { private signatures: Map
= new Map() readonly callback: SignCallback readonly tealCallback: TealSignCallback constructor() { this.callback = this.sign.bind(this) this.tealCallback = this.tealSign.bind(this) } private getPrivateKey(addr: Address): Uint8Array { const pk = this.signatures.get(addr) if (pk === undefined) throw new Error("Couldn't find account " + addr + " for signing") return pk } addFromMnemonic(mnemonic: string): Address { const account = algosdk.mnemonicToSecretKey(mnemonic) this.signatures.set(account.addr, account.sk) return account.addr } addFromSecretKey(secretKey: Uint8Array): Address { const mnemonic = algosdk.secretKeyToMnemonic(secretKey) return this.addFromMnemonic(mnemonic) } createAccount(): Address { const { sk: secretKey, addr: address } = algosdk.generateAccount(); this.signatures.set(address, secretKey) return address } async sign(txs: Transaction[]): Promise