import { Vault } from '../vault'
import { Wallet } from '../wallet'
-export async function _signData (wallet: Wallet, vault: Vault, index: number, address: string, data: string | string[]): Promise<string>
-export async function _signData (wallet: Wallet, vault: Vault, index: unknown, address: unknown, data: unknown): Promise<string> {
- try {
- if (typeof index !== 'number') {
- throw new TypeError('Index must be a number', { cause: index })
- }
- if (typeof address !== 'string') {
- throw new TypeError('Address must be a string', { cause: address })
- }
- const message = Array.isArray(data) ? data : [data]
- if (message.some(s => typeof s !== 'string')) {
- throw new TypeError('Data to sign must be strings', { cause: data })
- }
- if (wallet.type === 'Ledger') {
- return await Ledger.sign(index, message[0])
- }
- if (navigator.userActivation?.isActive === false) {
- throw new DOMException(
- 'Signing request was blocked due to lack of user activation',
- 'NotAllowedError'
- )
- }
- const { signature } = await vault.request<ArrayBuffer>({
- action: 'sign',
- index,
- message: utf8.toBuffer(message.join(''))
- })
- return bytes.toHex(new Uint8Array(signature))
- } catch (err) {
- throw new Error('Failed to sign data', { cause: err })
- }
-}
-
export async function _signBlock (wallet: Wallet, vault: Vault, index: number, address: string, block: Block, frontier?: Block): Promise<void>
export async function _signBlock (wallet: Wallet, vault: Vault, index: unknown, address: unknown, block: unknown, frontier?: unknown): Promise<void> {
try {
throw new Error(`Failed to sign block`, { cause: err })
}
}
+
+export async function _signData (wallet: Wallet, vault: Vault, index: number, address: string, data: string | string[]): Promise<string>
+export async function _signData (wallet: Wallet, vault: Vault, index: unknown, address: unknown, data: unknown): Promise<string> {
+ try {
+ if (typeof index !== 'number') {
+ throw new TypeError('Index must be a number', { cause: index })
+ }
+ if (typeof address !== 'string') {
+ throw new TypeError('Address must be a string', { cause: address })
+ }
+ const message = Array.isArray(data) ? data : [data]
+ if (message.some(s => typeof s !== 'string')) {
+ throw new TypeError('Data to sign must be strings', { cause: data })
+ }
+ if (wallet.type === 'Ledger') {
+ return await Ledger.sign(index, message[0])
+ }
+ if (navigator.userActivation?.isActive === false) {
+ throw new DOMException(
+ 'Signing request was blocked due to lack of user activation',
+ 'NotAllowedError'
+ )
+ }
+ const { signature } = await vault.request<ArrayBuffer>({
+ action: 'sign',
+ index,
+ message: utf8.toBuffer(message.join(''))
+ })
+ return bytes.toHex(new Uint8Array(signature))
+ } catch (err) {
+ throw new Error('Failed to sign data', { cause: err })
+ }
+}