1.2.0 • Published 5 months ago

phantomeer v1.2.0

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

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

  1. The library requires a Chromium-based browser
  2. Always close browser instances when done:
await browser.close();
  1. 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

1.2.0

5 months ago

1.1.1

5 months ago

1.1.0

5 months ago

1.0.0

5 months ago