Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (permissionless) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
permissionless.js
permissionless.js is a TypeScript library built on top of viem for deploying and managing ERC-4337 smart accounts, interacting with bundlers and paymasters, and leveraging custom signers.
Features
- High-Level Smart Account Support: We support a high-level API for deploying and managing smart accounts, including some of the most popular implementations (Safe, Kernel, Biconomy, etc.)
- Bundler Support: We support all bundler actions following ERC-4337.
- Gas Sponsorship: We support paymaster actions to allow you to easily sponsor gas fees.
- User Operation Utility Functions: We provide many low-level utility functions useful for dealing with User Operations.
- Modular and Extensible: We allow you to easily create and plug in your own smart account systems, bundlers, paymasters, and signers.
- Built on & for viem: permissionless.js is designed to be a thin wrapper around viem, maintaining the same style and overall feel viem provides.
- and a lot more...
Documentation
Take a look at our documentation to learn more about permissionless.js.
Installation
Install viem as a peer dependency.
Then install permissionless.js:
npm install viem permissionlessbun install viem permissionlessyarn add viem permissionlessOptional Dependencies
For WebAuthn functionality (passkeys), you'll also need to install the ox package:
npm install oxbun install oxyarn add oxNote: The ox package is optional and only required if you plan to use WebAuthn/passkey features. The library will throw a helpful error message if you try to use WebAuthn functionality without installing ox.
Quick Start
// Import the required modules.
import { createSmartAccountClient } from "permissionless";
import { createPaymasterClient } from "viem/account-abstraction";
import { sepolia } from "viem/chains";
import { http } from "viem";
const paymaster = createPaymasterClient({
transport: http(`https://api.pimlico.io/v2/sepolia/rpc?apikey=${pimlicoApiKey}`)
})
const account = toSimpleSmartAccount<entryPointVersion>({
client: getPublicClient(anvilRpc),
owner: privateKeyToAccount(generatePrivateKey())
})
// Create the required clients.
const bundlerClient = createSmartAccountClient({
account,
paymaster,
chain: sepolia,
bundlerTransport: http(
`https://api.pimlico.io/v2/sepolia/rpc?apikey=${pimlicoApiKey}`,
), // Use any bundler url
});
// Consume bundler, paymaster, and smart account actions!
const userOperationReceipt = await bundlerClient.getUserOperationReceipt({
hash: "0x5faea6a3af76292c2b23468bbea96ef63fb31360848be195748437f0a79106c8",
});Contributors
For a full explanation of permissionless.js, please visit our docs page
Build permissionless.js locally with:
bun run buildLicense
Distributed under an MIT License. See LICENSE for more information.
Contact
Feel free to ask any questions in our Telegram group
