@juweber99/vigee-wallet-connector
Version:
vigee library to allow persisted wallet connection across multiple wallets
57 lines (56 loc) • 1.87 kB
TypeScript
import { Transaction, TransactionSigner } from "algosdk";
import { SignedTxn } from ".";
export interface WalletTransaction {
txn: string;
signers?: Array<string>;
authAddr?: string;
msig?: {
version: number;
treshold: number;
addrs: Array<string>;
};
}
export declare enum Wallets {
PERA = "PERA",
MYALGO = "MYALGO",
ALGOSIGNER = "ALGOSIGNER"
}
export declare enum Networks {
TESTNET = "TestNet",
MAINNET = "MainNet",
VIGEE_DEV = "vigee"
}
export declare enum StorageKeys {
ACCOUNT_LIST = "acct-list",
ACCOUNT_PREFERENCE = "acct-preference",
WALLET_PREFERENCE = "wallet-preference",
NETWORK_PREFERENCE = "network-preference"
}
export declare type WalletConstructor<T extends IWallet> = new (network: Networks, wallet: Wallets, accountIdx?: number, popupPermissionCallback?: PopupPermissionCallback) => T;
export interface IWallet {
network: Networks;
walletChoice: Wallets;
_accounts: string[];
defaultAccountIndex: number;
displayName(): string;
getSelectedAccountAddress(): string;
}
export interface WalletImplementation extends IWallet {
img(inverted: boolean): string;
connect(disconnectCallback?: Function): Promise<boolean>;
disconnect(): void;
isConnected(): boolean;
reconnect(): Promise<Array<string>>;
signTxn(txns: Transaction[]): Promise<SignedTxn[] | Uint8Array[]>;
signBytes(b: Uint8Array): Promise<Uint8Array>;
signTeal(teal: Uint8Array): Promise<Uint8Array>;
getSigner(): TransactionSigner;
getAccounts(): string[];
}
export interface PermissionResult {
approved(): Promise<SignedTxn[]>;
declined(): Promise<SignedTxn[]>;
}
export interface PopupPermissionCallback {
request(permissionResult: PermissionResult): Promise<SignedTxn[]>;
}