API Reference
React SDK

React SDK Reference

npm install @partylayer/enterprise-react

Provider

PartyLayerProvider

Wrap your app to provide SDK context to all hooks and components.

import { PartyLayerProvider } from '@partylayer/enterprise-react';
 
<PartyLayerProvider config={{ appId: 'app_xxx', apiKey: 'pk_live_xxx' }}>
  <App />
</PartyLayerProvider>

Hooks

useAuth()

const {
  user,              // AuthSession | null
  login,             // (provider?: string) => Promise<void>
  register,          // (email: string, name?: string) => Promise<void>
  logout,            // () => Promise<void>
  isAuthenticated,   // boolean
  isLoading,         // boolean
} = useAuth();

useWallet()

const {
  wallet,            // EmbeddedWallet | null
  submitTransaction, // (params) => Promise<TransactionResult>
  getContracts,      // (template?: string) => Promise<ActiveContract[]>
  isReady,           // boolean
  isLoading,         // boolean
} = useWallet();

useContracts(templateName)

const {
  contracts,  // ActiveContract[]
  isLoading,  // boolean
  refetch,    // () => Promise<void>
} = useContracts('Cayvox.PartyLayer.RewardDelegation');

useTrustLevel()

const {
  level,           // 'embedded' | 'custodial' | 'self-custody'
  requestUpgrade,  // (target: TrustLevel) => Promise<void>
  isUpgrading,     // boolean
} = useTrustLevel();

useGuest()

const {
  session,        // GuestSession | null
  createSession,  // (options?) => Promise<GuestSessionWithToken>
  convert,        // (params) => Promise<GuestConvertResult>
  expireSession,  // () => Promise<void>
  isActive,       // boolean
  isLoading,      // boolean
  error,          // Error | null
} = useGuest();

useMfa()

const {
  setupMfa,     // (method: MfaMethod) => Promise<MfaSetupResponse>
  verifySetup,  // (method: MfaMethod, code: string) => Promise<{ verified, backupCodes? }>
  challenge,    // (method: MfaMethod) => Promise<MfaChallenge>
  verify,       // (challengeId: string, code: string) => Promise<{ verified, verificationToken }>
  status,       // MfaStatus | null
  isLoading,    // boolean
} = useMfa();

useExternalWallets()

const {
  connectedWallet,  // ConnectedExternalWallet | null
  connect,          // (adapterName: string) => Promise<void>
  disconnect,       // () => Promise<void>
  isConnecting,     // boolean
} = useExternalWallets();

usePartyLayer()

Access the underlying PartyLayerEnterprise instance directly.

const pl = usePartyLayer();
pl.on('tx:confirmed', handler);

Components

LoginButton

Pre-built authentication button with multi-provider support.

import { LoginButton } from '@partylayer/enterprise-react';
 
<LoginButton
  providers={['auth0', 'passkey', 'telegram']}
  onSuccess={() => {}}
  onError={(error) => {}}
  className="my-button"
  showGuestOption
  onGuestStart={() => {}}
/>

Shows provider selector dropdown when multiple providers are configured. Includes Telegram icon for Telegram provider and fingerprint icon for passkey.

WalletStatus

import { WalletStatus } from '@partylayer/enterprise-react';
 
<WalletStatus display="compact" />  // or "full"

TransactionButton

import { TransactionButton } from '@partylayer/enterprise-react';
 
<TransactionButton
  templateId={{ package_id: '...', module_name: '...', entity_name: '...' }}
  choice="ClaimReward"
  args={{ amount: '100.0' }}
  contractId="00abcd..."
  onSuccess={(result) => console.log(result)}
  onError={(error) => console.error(error)}
>
  Claim Reward
</TransactionButton>

WalletSelector

import { WalletSelector } from '@partylayer/enterprise-react';
 
<WalletSelector adapters={['cantonParty', 'iframe']} />

MfaSetupDialog / MfaChallengeDialog

import { MfaSetupDialog, MfaChallengeDialog } from '@partylayer/enterprise-react';
 
<MfaSetupDialog userId={user.userId} onComplete={() => {}} />
<MfaChallengeDialog onVerified={(token) => {}} />