import type { Transaction, VersionedTransaction } from "@solana/web3.js"; import { RequestArguments } from "@web3auth/base"; import BN from "bn.js"; import { InjectedProvider } from "./providers"; export type TransactionOrVersionedTransaction = Transaction | VersionedTransaction; export interface ISolanaWallet { publicKey?: { toBytes(): Uint8Array; }; signAndSendTransaction(transaction: T): Promise<{ signature: string; }>; signTransaction?(transaction: T): Promise; signAllTransactions?(transactions: T[]): Promise; signMessage(message: Uint8Array, display?: string): Promise; request(args: RequestArguments): Promise; } export interface IBaseWalletProvider { publicKey?: { toBytes(): Uint8Array; }; signMessage?(message: Uint8Array, display?: "hex" | "utf8"): Promise<{ signature: Uint8Array; publicKey: BN; }>; signTransaction?(transaction: T): Promise; signAllTransactions?(transactions: T[]): Promise; signAndSendTransaction?(transaction: T): Promise<{ signature: string; }>; } export interface ITorusWalletProvider extends InjectedProvider { sendTransaction(transaction: T): Promise; signTransaction(transaction: T): Promise; signAllTransactions(transactions: T[]): Promise; signMessage(data: Uint8Array): Promise; } export interface IWalletStandardProviderHandler extends IBaseWalletProvider { }