@partylayer/provider
v0.1.3
Published
CIP-0103 native Provider implementation for PartyLayer
Readme
@partylayer/provider
CIP-0103 native Provider implementation for Canton Network
Overview
@partylayer/provider implements the CIP-0103 Provider interface for the Canton Network. It provides a standardized way for dApps to communicate with any CIP-0103-compliant wallet.
Features
- CIP-0103 Compliant: All 10 mandatory methods implemented (
connect,disconnect,isConnected,status,getActiveNetwork,listAccounts,getPrimaryAccount,signMessage,prepareExecute,ledgerApi) - Wallet Discovery: Automatic scanning for injected CIP-0103 providers at
window.canton.* - Async Wallet Support: Handles both synchronous (browser extension) and asynchronous (mobile/QR) wallet flows
- Standard Error Model:
ProviderRpcErrorwith EIP-1193 / EIP-1474 numeric codes - CAIP-2 Networks: Network identity using Chain Agnostic standard format
- Legacy Bridge:
createProviderBridge()mapsPartyLayerClientto CIP-0103 Provider interface
Installation
npm install @partylayer/providerQuick Start
Native Provider (with CIP-0103 wallets)
import { PartyLayerProvider, discoverProviders } from '@partylayer/provider';
// Discover injected CIP-0103 wallet providers
const wallets = discoverProviders();
// Create provider with first discovered wallet
const provider = new PartyLayerProvider({ walletProvider: wallets[0] });
// Connect
const result = await provider.request({ method: 'connect' });
// Get primary account
const account = await provider.request({ method: 'getPrimaryAccount' });Legacy Bridge (with PartyLayerClient)
import { createProviderBridge } from '@partylayer/provider';
import { createPartyLayer } from '@partylayer/sdk';
const client = createPartyLayer({ network: 'devnet' });
const provider = createProviderBridge(client);
// Use standard CIP-0103 interface
await provider.request({ method: 'connect', params: { walletId: 'console' } });CIP-0103 Events
provider.on('statusChanged', (status) => { /* connection state changed */ });
provider.on('accountsChanged', (accounts) => { /* accounts updated */ });
provider.on('txChanged', (tx) => { /* transaction lifecycle update */ });
provider.on('connected', (result) => { /* async connect completed */ });Links
License
MIT
