phantomeer v1.2.0
Phantomeer
Phantomeer is a powerful Puppeteer-based automation library for interacting with the Phantom wallet browser extension. It provides extensive functionality for wallet setup, transaction management, and multi-chain interactions.
📦 Installation
npm install phantomeer
🚀 Quick Start
import { launchBrowser } from "phantomeer";
// Launch with Phantom extension
const { browser, page } = await launchBrowser().phantom();
// Create new wallet
const { extPage, seedPhrase } = await launchBrowser().phantom().new();
📘 Core Features
Browser Launch Options
// Standard launch (no extension)
const { browser } = await launchBrowser();
// Launch with Phantom extension
const { browser, page } = await launchBrowser().phantom();
// Launch with custom path to extension
const { browser, page } = await launchBrowser().phantom("/path/to/extension");
// Launch with custom Puppeteer options
const { browser } = await launchBrowser({
headless: false,
defaultViewport: null
});
Wallet Setup Methods
// Create new wallet (returns seed phrase)
const { extPage, seedPhrase } = await launchBrowser().phantom().new("password");
// Import using seed phrase
const { extPage } = await launchBrowser().phantom().phrase("your seed phrase");
// Import using private key
const { extPage } = await launchBrowser().phantom().key("your private key");
// Alternative wallet creation using addWallet
await addWallet(browser, page).new();
await addWallet(browser, page).phrase("your seed phrase");
await addWallet(browser, page).key("your private key");
Transaction Management
// Connect wallet (for dApp interactions)
await connectWallet(browser);
// Sign a transaction
await signTransaction(browser);
// Connect and sign in one call
await connectAndSign(browser);
// Send SOL
await sendTx(extPage, "recipient_address", "1.5");
Address Management
The getAddress
utility provides a chainable API for retrieving wallet addresses:
// Get Solana address
const solanaAddress = await getAddress(page).solana();
// Get Ethereum address
const ethAddress = await getAddress(page).ethereum();
// Get Bitcoin address
const btcAddress = await getAddress(page).bitcoin();
// Default (Solana) address
const address = await getAddress(page);
Network Management
// Enable Monad network
await enableMonad(page);
🔍 Detailed API Reference
launchBrowser(options?: LaunchOptions)
Launches a browser instance with optional Puppeteer configuration.
interface StandardLaunchResult {
browser: Browser;
}
interface PhantomLaunchResult {
browser: Browser;
page: Page;
}
connectWallet(browser: Browser)
Handles the Phantom wallet connection flow for dApp interactions.
signTransaction(browser: Browser)
Manages the transaction signing flow in Phantom.
connectAndSign(browser: Browser)
Combines wallet connection and transaction signing into a single operation.
setupPhantom(page: Page, password?: string)
Sets up a new Phantom wallet with optional custom password.
setupPhantomWithPhrase(page: Page, seedPhrase?: string, password?: string)
Imports a wallet using a seed phrase.
sendTx(extPage: Page, address: string, amount: string)
Sends SOL to a specified address.
getAddress(page: Page)
Returns an AddressGetter instance with the following methods:
.solana()
: Gets Solana address.ethereum()
: Gets Ethereum address.bitcoin()
: Gets Bitcoin address.default()
: Gets default (Solana) address
enableMonad(page: Page)
Enables the Monad network in Phantom settings.
⚠️ Important Notes
- The library requires a Chromium-based browser
- Always close browser instances when done:
await browser.close();
- Error handling is recommended:
try {
const { browser, page } = await launchBrowser().phantom();
// ... your code ...
} catch (error) {
console.error("Error:", error);
} finally {
await browser?.close();
}
🛠 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📜 License
MIT License