w3wallets
Version:
browser wallets for playwright
96 lines (86 loc) • 3.44 kB
text/typescript
import * as playwright_test from 'playwright/test';
import { Page, test, BrowserContext } from '@playwright/test';
/**
* Represents the supported network types for the BackPack application.
*/
type BackPackNetwork = "Solana" | "Eclipse" | "Ethereum" | "Polygon" | "Base" | "Arbitrum" | "Optimism";
type WalletName = "backpack" | "polkadotJS" | "metamask";
type NoDuplicates<T extends readonly unknown[], Acc extends readonly unknown[] = []> = T extends [infer Head, ...infer Tail] ? Head extends Acc[number] ? never : [Head, ...NoDuplicates<Tail, [...Acc, Head]>] : T;
interface IWallet {
gotoOnboardPage(): Promise<void>;
}
declare abstract class Wallet implements IWallet {
page: Page;
protected extensionId: string;
constructor(page: Page, extensionId: string);
abstract gotoOnboardPage(): Promise<void>;
}
declare class Backpack extends Wallet {
private defaultPassword;
private currentAccountId;
private maxAccountId;
gotoOnboardPage(): Promise<void>;
onboard(network: BackPackNetwork, privateKey: string): Promise<void>;
addAccount(network: BackPackNetwork, privateKey: string): Promise<void>;
/**
* Switch account
* @param id The first added account has id 1, the second – 2, and so on
*/
switchAccount(id: number): Promise<void>;
unlock(): Promise<void>;
setRPC(network: BackPackNetwork, rpc: string): Promise<void>;
ignoreAndProceed(): Promise<void>;
approve(): Promise<void>;
deny(): Promise<void>;
private _clickOnAccount;
private _importAccount;
}
declare class PolkadotJS extends Wallet {
private defaultPassword;
gotoOnboardPage(): Promise<void>;
onboard(seed: string, password?: string, name?: string): Promise<void>;
selectAllAccounts(): Promise<void>;
selectAccount(accountId: string): Promise<void>;
enterPassword(password?: string): Promise<void>;
approve(): Promise<void>;
deny(): Promise<void>;
private _getLabeledInput;
}
type NetworkSettings = {
name: string;
rpc: string;
chainId: number;
currencySymbol: string;
};
declare class Metamask extends Wallet {
private defaultPassword;
gotoOnboardPage(): Promise<void>;
/**
*
* @param mnemonic 12-word mnemonic seed phrase
*/
onboard(mnemonic: string, password?: string): Promise<void>;
switchAccount(accountName: {
name: string;
}): Promise<void>;
switchAccount(accountAddress: {
address: string;
}): Promise<void>;
importAccount(privateKey: string): Promise<void>;
addAccount(accountName?: string): Promise<void>;
getAccountName(): Promise<string>;
connectToNetwork(networkName: string, networkType?: "Popular" | "Custom"): Promise<void>;
addCustomNetwork(settings: NetworkSettings): Promise<void>;
enableTestNetworks(): Promise<void>;
approve(): Promise<void>;
deny(): Promise<void>;
private usingNotificationPage;
private clickTopRightCornerToCloseAllTheMarketingBullshit;
}
declare function withWallets<T extends readonly WalletName[]>(test: typeof test, ...config: NoDuplicates<T>): playwright_test.TestType<playwright_test.PlaywrightTestArgs & playwright_test.PlaywrightTestOptions & {
context: BrowserContext;
backpack: Backpack;
polkadotJS: PolkadotJS;
metamask: Metamask;
}, playwright_test.PlaywrightWorkerArgs & playwright_test.PlaywrightWorkerOptions>;
export { withWallets };