# Para > Non-custodial embedded wallet infrastructure using MPC for building embedded wallet integrations across web, mobile, and server platforms supporting EVM, Solana, and Cosmos chains. ## Para SDK Implementation Supplement > Concrete build-time details: packages, initialization, authentication, signing, connectors, account abstraction, and configuration for building Para integrations. ## 1. SDK Package Matrix All `@getpara/*` packages must use the **same version** as each other. Always pin every `@getpara/*` dependency to the same release to avoid mismatches. ### Core SDKs | Package | Use When | |---------|----------| | `@getpara/react-sdk` | React/Next.js apps with ParaProvider + hooks + ParaModal | | `@getpara/react-sdk-lite` | React apps using Para only through a connector (Wagmi/Graz) - lighter bundle, exports `ParaWeb` | | `@getpara/web-sdk` | Non-React web frameworks (Vue, Svelte) - exports `ParaWeb` imperative class | | `@getpara/server-sdk` | Node.js/Bun/Deno server-side - exports `Para` (aliased as `ParaServer`) | | `@getpara/react-native-wallet` | React Native / Expo mobile apps | ### Signing Integration Packages | Package | Web3 Library | Companion Deps | |---------|-------------|----------------| | `@getpara/viem-v2-integration` | Viem 2.x | `viem@^2.27.0` | | `@getpara/ethers-v6-integration` | Ethers 6.x | `ethers@^6.13.0` | | `@getpara/ethers-v5-integration` | Ethers 5.x | `ethers@^5.8.0` | | `@getpara/solana-web3.js-v1-integration` | Solana Web3.js 1.x | `@solana/web3.js@^1.98.0` | | `@getpara/solana-signers-v2-integration` | Solana Signers 2.x | `@solana/web3.js@^1.98.0` | | `@getpara/cosmjs-v0-integration` | CosmJS 0.34+ | `@cosmjs/stargate@^0.34.0`, `@cosmjs/proto-signing@^0.34.0` | ### Connector Packages | Package | Connector Ecosystem | Companion Deps | |---------|-------------------|----------------| | `@getpara/wagmi-v2-integration` | Wagmi 2.x / 3.x | `wagmi@^2.15.0`, `viem@^2.27.0`, `@tanstack/react-query@^5.0.0` | | `@getpara/rainbowkit-wallet` | RainbowKit | `@rainbow-me/rainbowkit@^2.0.0`, `wagmi`, `viem` | | `@getpara/graz-integration` | Graz (Cosmos) | `graz@^0.4.1` | ### Wallet Connector Packages (for bulk pregen) | Package | Purpose | |---------|---------| | `@getpara/evm-wallet-connectors` | EVM external wallet connections | | `@getpara/solana-wallet-connectors` | Solana external wallet connections | | `@getpara/cosmos-wallet-connectors` | Cosmos external wallet connections | ### Account Abstraction Companion Deps | AA Provider | Key Packages | |------------|-------------| | Alchemy (ERC-4337) | `@aa-sdk/core`, `@account-kit/infra`, `@account-kit/smart-contracts` | | Alchemy (EIP-7702) | Same as above, uses `createModularAccountV2Client` with `mode: "7702"` | | ZeroDev (ERC-4337) | `@zerodev/sdk`, `@zerodev/ecdsa-validator` | | ZeroDev (EIP-7702) | Same packages, uses `create7702KernelAccount` + `KERNEL_V3_3` | | Gelato | `@gelatonetwork/smartwallet` | | Thirdweb | `thirdweb` | | Rhinestone | `@rhinestone/sdk` | | Porto | `porto` | ### Required Companion Dependency All React examples require: ``` @tanstack/react-query@^5.0.0 ``` --- ## 2. Initialization Patterns ### React / Next.js (ParaProvider) ```tsx // src/components/ParaProvider.tsx "use client"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { Environment, ParaProvider as ParaSDKProvider } from "@getpara/react-sdk"; const API_KEY = process.env.NEXT_PUBLIC_PARA_API_KEY ?? ""; const ENVIRONMENT = (process.env.NEXT_PUBLIC_PARA_ENVIRONMENT as Environment) || Environment.BETA; if (!API_KEY) { throw new Error("API key is not defined. Please set NEXT_PUBLIC_PARA_API_KEY in your environment variables."); } const queryClient = new QueryClient(); export function ParaProvider({ children }: { children: React.ReactNode }) { return ( {children} ); } ``` The `config` prop accepts: ```ts interface ParaProviderConfig { appName: string; // required disableAutoSessionKeepAlive?: boolean; // disable automatic session refresh disableEmbeddedModal?: boolean; rpcUrl?: string; farcasterMiniAppConfig?: FarcasterMiniAppConfig; } ``` Wrap your app root (e.g., `layout.tsx`): ```tsx import { ParaProvider } from "@/components/ParaProvider"; export default function RootLayout({ children }) { return {children}; } ``` `ParaProvider` also accepts an optional `callbacks` prop for event handling: ```ts type Callbacks = { onLogout?: (event) => void; onLogin?: (event) => void; onAccountSetup?: (event) => void; onAccountCreation?: (event) => void; onSignMessage?: (event) => void; onSignTransaction?: (event) => void; onWalletsChange?: (event) => void; onWalletCreated?: (event) => void; onPregenWalletClaimed?: (event) => void; }; ``` ### Vue / Svelte (ParaWeb - imperative) ```ts // src/lib/para.ts import { Environment, ParaWeb } from "@getpara/web-sdk"; const API_KEY = import.meta.env.VITE_PARA_API_KEY; const ENVIRONMENT = (import.meta.env.VITE_PARA_ENVIRONMENT as Environment) || Environment.BETA; if (!API_KEY) { throw new Error("API key is not defined. Please set VITE_PARA_API_KEY in your environment variables."); } export const para = new ParaWeb(ENVIRONMENT, API_KEY); ``` ### Server (ParaServer) ```ts import { Para as ParaServer, Environment } from "@getpara/server-sdk"; const PARA_API_KEY = process.env.PARA_API_KEY; const PARA_ENVIRONMENT = (process.env.PARA_ENVIRONMENT as Environment) || Environment.BETA; const para = new ParaServer(PARA_ENVIRONMENT, PARA_API_KEY); ``` ### React Native / Expo (ParaMobile) ```ts import ParaMobile, { Environment } from "@getpara/react-native-wallet"; const para = new ParaMobile( Environment.BETA, process.env.EXPO_PUBLIC_PARA_API_KEY, undefined, { disableWorkers: true } ); ``` The `{ disableWorkers: true }` option is **required** for React Native because Web Workers are not available. ### Chrome Extension (storage overrides) ```ts import { ParaWeb } from "@getpara/react-sdk"; import { chromeStorageOverrides } from "../chrome-storage"; export const para = new ParaWeb(ENVIRONMENT, API_KEY, { ...chromeStorageOverrides, useStorageOverrides: true, }); // Shared init promise - await in any script that needs Para export const paraReady = para.init(); ``` The `chromeStorageOverrides` object maps `chrome.storage.local` / `chrome.storage.session` to replace `localStorage` / `sessionStorage` which are not available in extension service workers. See `examples-hub/web/with-chrome-extension/src/lib/chrome-storage.ts` for the full implementation. --- ## 3. Environment Variables ### Naming Conventions by Framework | Framework | Prefix | Example | |-----------|--------|---------| | Next.js (client) | `NEXT_PUBLIC_` | `NEXT_PUBLIC_PARA_API_KEY` | | Next.js (server) | none | `PARA_API_KEY` | | Vite (Vue/Svelte) | `VITE_` | `VITE_PARA_API_KEY` | | Expo | `EXPO_PUBLIC_` | `EXPO_PUBLIC_PARA_API_KEY` | | Node.js server | none | `PARA_API_KEY` | ### Common Variables ```env # Required - Para PARA_API_KEY=your_api_key PARA_ENVIRONMENT=BETA # or PRODUCTION # Client-side variants (pick one based on framework) NEXT_PUBLIC_PARA_API_KEY=your_api_key NEXT_PUBLIC_PARA_ENVIRONMENT=BETA VITE_PARA_API_KEY=your_api_key VITE_PARA_ENVIRONMENT=BETA EXPO_PUBLIC_PARA_API_KEY=your_api_key # Server-side pregen encryption ENCRYPTION_KEY=a_32_byte_string_exactly_this_l # Must be exactly 32 bytes # Account Abstraction ALCHEMY_API_KEY=your_alchemy_key ALCHEMY_GAS_POLICY_ID=your_policy_id ALCHEMY_RPC_URL=https://arb-sepolia.g.alchemy.com/v2/your_key ZERODEV_PROJECT_ID=your_zerodev_project_id ZERODEV_BUNDLER_RPC=https://rpc.zerodev.app/api/v2/bundler/... ZERODEV_PAYMASTER_RPC=https://rpc.zerodev.app/api/v2/paymaster/... ZERODEV_ARBITRUM_SEPOLIA_RPC=https://rpc.zerodev.app/api/v2/rpc/... # REST API PARA_REST_BASE_URL=https://api.beta.getpara.com # or https://api.getpara.com ``` --- ## 4. Authentication Flows ### Email Auth (React hooks pattern) ```tsx import { useSignUpOrLogIn, useWaitForLogin, useWaitForWalletCreation, type AuthStateVerify, } from "@getpara/react-sdk"; // In your hook/component: const { signUpOrLogIn, isPending: isSigningUp } = useSignUpOrLogIn(); const { waitForLogin, isPending: isWaitingForLogin } = useWaitForLogin(); const { waitForWalletCreation, isPending: isWaitingForWallet } = useWaitForWalletCreation(); const shouldCancel = useRef(false); // Step 1: Submit email signUpOrLogIn( { auth: { email } }, { onSuccess: (authState) => { if (authState?.stage === "verify") { const verifyState = authState as AuthStateVerify; // verifyState.loginUrl -> open in iframe or popup for passkey verification // verifyState.nextStage -> "signup" (new user) or "login" (returning user) const isNewUser = verifyState.nextStage === "signup"; handleAuthComplete(isNewUser); } }, onError: (err) => { /* handle error */ }, } ); // Step 2: Wait for auth completion function handleAuthComplete(isNewUser: boolean) { if (isNewUser) { waitForWalletCreation( { isCanceled: () => shouldCancel.current }, { onSuccess: () => { /* user is logged in with wallet */ } } ); } else { waitForLogin( { isCanceled: () => shouldCancel.current }, { onSuccess: () => { /* user is logged in */ } } ); } } ``` The `loginUrl` from Step 1 must be displayed to the user in an iframe or popup - it's the passkey verification page hosted by Para. ### Email Auth (Imperative / Svelte / Vue) ```ts import { para } from "@/lib/para"; // Step 1: Submit email const authState = await para.signUpOrLogIn({ auth: { email } }); if (authState.stage === "verify" && authState.loginUrl) { const isNewUser = authState.nextStage === "signup"; // Show authState.loginUrl to user in iframe/popup // Step 2: Wait for completion if (isNewUser) { await para.waitForWalletCreation({ isCanceled: () => shouldCancel }); } else { const result = await para.waitForLogin({ isCanceled: () => shouldCancel }); if (result.needsWallet) { await para.waitForWalletCreation({ isCanceled: () => shouldCancel }); } } } ``` ### OAuth Auth (React hooks) ```tsx import { useVerifyOAuth, useVerifyFarcaster, useWaitForLogin, useWaitForWalletCreation, type TOAuthMethod, } from "@getpara/react-sdk"; const { verifyOAuth } = useVerifyOAuth(); const { verifyFarcaster } = useVerifyFarcaster(); // Standard OAuth (Google, Apple, Discord, Facebook, Twitter) verifyOAuth( { method: "GOOGLE", // TOAuthMethod excluding "TELEGRAM" | "FARCASTER" onOAuthUrl: (url) => { window.open(url, "oauth", "popup=true"); }, isCanceled: () => shouldCancel.current || !!popupWindow.current?.closed, }, { onSuccess: (authState) => { if (authState.stage === "done") { handleAuthComplete(authState.isNewUser); } }, } ); // Farcaster verifyFarcaster( { onConnectUri: (uri) => { window.open(uri, "farcaster", "popup=true"); }, isCanceled: () => shouldCancel.current || !!popupWindow.current?.closed, }, { onSuccess: (authState) => { if (authState.stage === "done") { handleAuthComplete(authState.isNewUser); } }, } ); ``` ### Verify iframe listener When showing the `loginUrl` in an iframe, listen for the close message: ```ts useEffect(() => { const portalBase = "https://app.beta.getpara.com"; // or https://app.getpara.com const handleMessage = (event: MessageEvent) => { if (!event.origin.startsWith(portalBase)) return; if (event.data?.type === "CLOSE_WINDOW" && event.data.success) { setVerifyUrl(null); } }; window.addEventListener("message", handleMessage); return () => window.removeEventListener("message", handleMessage); }, []); ``` --- ## 5. Signing Integration Code ### Viem v2 ```ts import { createParaAccount, createParaViemClient } from "@getpara/viem-v2-integration"; import { http, parseEther, parseGwei } from "viem"; import { sepolia } from "viem/chains"; // From client (using useClient hook): import { useClient } from "@getpara/react-sdk"; const client = useClient(); // returns the Para client instance // Create account + client const viemParaAccount = createParaAccount(para); // para = ParaServer or client const viemClient = createParaViemClient(para, { account: viemParaAccount, chain: sepolia, transport: http("https://ethereum-sepolia-rpc.publicnode.com"), }); // Sign transaction const request = await viemClient.prepareTransactionRequest({ account: viemParaAccount, to: "0x...", value: parseEther("0.0001"), gas: BigInt(21000), maxFeePerGas: parseGwei("20"), maxPriorityFeePerGas: parseGwei("3"), chain: sepolia, }); const signedTx = await viemClient.signTransaction(request); ``` ### Ethers v6 ```ts import { ParaEthersSigner } from "@getpara/ethers-v6-integration"; import { ethers } from "ethers"; const provider = new ethers.JsonRpcProvider("https://ethereum-sepolia-rpc.publicnode.com"); const signer = new ParaEthersSigner(para, provider as ethers.Provider); const address = await signer.getAddress(); const tx = { to: address, value: ethers.parseEther("0.0001"), nonce: await provider.getTransactionCount(address), gasLimit: 21000, gasPrice: (await provider.getFeeData()).gasPrice, }; await signer.signTransaction(tx); ``` ### Ethers v5 ```ts import { ParaEthersV5Signer } from "@getpara/ethers-v5-integration"; import { ethers } from "ethers"; const provider = new ethers.providers.JsonRpcProvider(RPC_URL); const signer = new ParaEthersV5Signer(client, provider); // client from useClient() await signer.signMessage("Hello, Para!"); await signer.sendTransaction(tx); ``` ### Solana Web3.js v1 ```ts import { ParaSolanaWeb3Signer } from "@getpara/solana-web3.js-v1-integration"; import { Connection, Transaction, SystemProgram, LAMPORTS_PER_SOL } from "@solana/web3.js"; const connection = new Connection("https://api.testnet.solana.com"); const signer = new ParaSolanaWeb3Signer(para, connection); const { blockhash } = await connection.getLatestBlockhash(); const tx = new Transaction(); tx.recentBlockhash = blockhash; tx.feePayer = signer.sender; // PublicKey from Para wallet tx.add( SystemProgram.transfer({ fromPubkey: signer.sender, toPubkey: signer.sender, lamports: LAMPORTS_PER_SOL / 1000, }) ); await signer.signTransaction(tx); ``` ### CosmJS ```ts import { ParaProtoSigner } from "@getpara/cosmjs-v0-integration"; import { SigningStargateClient } from "@cosmjs/stargate"; const signer = new ParaProtoSigner(para, "cosmos"); // second arg is bech32 prefix const stargateClient = await SigningStargateClient.connectWithSigner( "https://rpc-rs.cosmos.nodestake.top/", signer ); const fee = { amount: [{ denom: "uatom", amount: "500" }], gas: "200000" }; await stargateClient.sign( signer.address, [{ typeUrl: "/cosmos.bank.v1beta1.MsgSend", value: { fromAddress: signer.address, toAddress: "cosmos1...", amount: [{ denom: "uatom", amount: "1000" }] } }], fee, "Signed with Para" ); ``` --- ## 6. Wallet Pre-generation (Server-Side) ### Create pre-generated wallet ```ts import { Para as ParaServer, Environment } from "@getpara/server-sdk"; import { encrypt } from "./encryption-utils"; import { setKeyShareInDB } from "./keySharesDB"; const para = new ParaServer(PARA_ENVIRONMENT, PARA_API_KEY); // Check if wallet already exists const walletExists = await para.hasPregenWallet({ pregenId: { email } }); // Create wallets for all chain types const wallets = await para.createPregenWalletPerType({ types: ["EVM", "SOLANA", "COSMOS"], pregenId: { email }, }); // Get and encrypt the user share const keyShare = para.getUserShare(); const encryptedKeyShare = await encrypt(keyShare); await setKeyShareInDB(email, encryptedKeyShare); ``` ### Restore user share for signing ```ts const keyShare = await getKeyShareInDB(email); const decryptedKeyShare = await decrypt(keyShare); await para.setUserShare(decryptedKeyShare); // Now para is ready for signing with any integration ``` ### AES-GCM Encryption Pattern ```ts // encryption-utils.ts const ALGORITHM = "AES-GCM"; const IV_LENGTH = 12; // ENCRYPTION_KEY env var must be exactly 32 bytes async function importSecretKey(keyString: string): Promise { const keyBuffer = Buffer.from(keyString, "utf-8"); return await crypto.subtle.importKey("raw", keyBuffer, { name: ALGORITHM }, false, ["encrypt", "decrypt"]); } export async function encrypt(text: string): Promise { const cryptoKey = await importSecretKey(process.env.ENCRYPTION_KEY); const iv = crypto.getRandomValues(new Uint8Array(IV_LENGTH)); const encoded = new TextEncoder().encode(text); const encrypted = await crypto.subtle.encrypt({ name: ALGORITHM, iv }, cryptoKey, encoded); return `${Buffer.from(iv).toString("base64")}:${Buffer.from(encrypted).toString("base64")}`; } export async function decrypt(encryptedText: string): Promise { const [ivBase64, dataBase64] = encryptedText.split(":"); const iv = new Uint8Array(Buffer.from(ivBase64, "base64")); const data = Buffer.from(dataBase64, "base64"); const cryptoKey = await importSecretKey(process.env.ENCRYPTION_KEY); const decrypted = await crypto.subtle.decrypt({ name: ALGORITHM, iv }, cryptoKey, data); return new TextDecoder().decode(decrypted); } ``` ### SQLite Storage Schema ```ts // keySharesDB.ts - uses `sqlite` + `sqlite3` packages import { open } from "sqlite"; import sqlite3 from "sqlite3"; const db = await open({ filename: "keyShares.db", driver: sqlite3.Database }); await db.exec(` CREATE TABLE IF NOT EXISTS keyShares ( email TEXT PRIMARY KEY NOT NULL, keyShare TEXT NOT NULL ) `); // Get const row = await db.get("SELECT keyShare FROM keyShares WHERE email = ?", [email]); // Upsert await db.run( "INSERT INTO keyShares (email, keyShare) VALUES (?, ?) ON CONFLICT(email) DO UPDATE SET keyShare = excluded.keyShare", [email, encryptedKeyShare] ); ``` --- ## 7. Account Abstraction Patterns ### Alchemy ERC-4337 ```ts import { alchemy, arbitrumSepolia } from "@account-kit/infra"; import { WalletClientSigner } from "@aa-sdk/core"; import { createModularAccountAlchemyClient } from "@account-kit/smart-contracts"; import { createParaAccount, createParaViemClient } from "@getpara/viem-v2-integration"; const viemParaAccount = createParaAccount(para); const viemClient = createParaViemClient(para, { account: viemParaAccount, chain: arbitrumSepolia, transport: http(ALCHEMY_RPC_URL), }); const walletClientSigner = new WalletClientSigner(viemClient, "para"); const alchemyClient = await createModularAccountAlchemyClient({ transport: alchemy({ rpcUrl: ALCHEMY_RPC_URL }), chain: arbitrumSepolia, signer: walletClientSigner, policyId: ALCHEMY_GAS_POLICY_ID, }); const result = await alchemyClient.sendUserOperation({ uo: batchCalls }); await alchemyClient.waitForUserOperationTransaction(result); ``` ### Alchemy EIP-7702 ```ts import { createModularAccountV2Client } from "@account-kit/smart-contracts"; import { createParaAccount } from "@getpara/viem-v2-integration"; import type { SmartAccountSigner, LocalAccount } from "@aa-sdk/core"; const viemParaAccount = createParaAccount(para); // Wrap as SmartAccountSigner const paraSigner: SmartAccountSigner = { signerType: "para", inner: viemParaAccount, getAddress: async () => viemParaAccount.address, signMessage: async (message) => viemParaAccount.signMessage({ message }), signTypedData: async (typedData) => viemParaAccount.signTypedData(typedData), signAuthorization: async (auth) => viemParaAccount.signAuthorization(auth), }; const alchemyClient = await createModularAccountV2Client({ mode: "7702", transport: alchemy({ rpcUrl: ALCHEMY_RPC_URL }), chain: arbitrumSepolia, signer: paraSigner, policyId: ALCHEMY_GAS_POLICY_ID, }); ``` ### ZeroDev ERC-4337 ```ts import { signerToEcdsaValidator } from "@zerodev/ecdsa-validator"; import { createKernelAccount, createKernelAccountClient, createZeroDevPaymasterClient } from "@zerodev/sdk"; import { getEntryPoint, KERNEL_V3_1 } from "@zerodev/sdk/constants"; const viemParaAccount = createParaAccount(para); const viemClient = createParaViemClient(para, { account: viemParaAccount, chain: arbitrumSepolia, transport: http(ZERODEV_RPC_URL) }); const publicClient = createPublicClient({ chain: arbitrumSepolia, transport: http(ZERODEV_RPC_URL) }); const entryPoint = getEntryPoint("0.7"); const ecdsaValidator = await signerToEcdsaValidator(viemClient, { signer: viemParaAccount, entryPoint, kernelVersion: KERNEL_V3_1, }); const kernelAccount = await createKernelAccount(publicClient, { plugins: { sudo: ecdsaValidator }, entryPoint, kernelVersion: KERNEL_V3_1, }); const kernelClient = createKernelAccountClient({ account: kernelAccount, chain: arbitrumSepolia, bundlerTransport: http(ZERODEV_BUNDLER_RPC), paymaster: { getPaymasterData: (userOp) => createZeroDevPaymasterClient({ chain: arbitrumSepolia, transport: http(ZERODEV_PAYMASTER_RPC) }) .sponsorUserOperation({ userOperation: userOp }), }, }); const hash = await kernelClient.sendUserOperation({ callData: await kernelClient.account.encodeCalls(calls) }); await kernelClient.waitForUserOperationReceipt({ hash, timeout: 30000 }); ``` ### ZeroDev EIP-7702 ```ts import { create7702KernelAccount, create7702KernelAccountClient } from "@zerodev/ecdsa-validator"; import { KERNEL_V3_3 } from "@zerodev/sdk/constants"; const kernelAccount = await create7702KernelAccount(publicClient, { signer: viemParaAccount, entryPoint: getEntryPoint("0.7"), kernelVersion: KERNEL_V3_3, }); const kernelClient = create7702KernelAccountClient({ account: kernelAccount, chain: arbitrumSepolia, bundlerTransport: http(ZERODEV_BUNDLER_RPC), paymaster: createZeroDevPaymasterClient({ chain: arbitrumSepolia, transport: http(ZERODEV_PAYMASTER_RPC) }), client: publicClient, }); const hash = await kernelClient.sendUserOperation({ calls }); ``` ### Gelato ERC-4337 ```ts import { accounts, createGelatoSmartWalletClient } from "@gelatonetwork/smartwallet"; const viemParaAccount = createParaAccount(para); const viemClient = createParaViemClient(para, { account: viemParaAccount, chain: sepolia, transport: http() }); const account = await accounts.kernel({ eip7702: false, signer: viemClient }); const gelatoClient = createGelatoSmartWalletClient({ account, apiKey: GELATO_API_KEY }); const result = await gelatoClient.execute({ payment: { type: "sponsored" }, calls: [{ to: "0x...", value: 0n, data: "0x" }], }); await result.wait(); ``` ### Gelato EIP-7702 ```ts import { gelato } from "@gelatonetwork/smartwallet/accounts"; import { createGelatoSmartWalletClient } from "@gelatonetwork/smartwallet"; const account = await gelato({ signer: viemClient }); // Different subpath from 4337's accounts.kernel() const gelatoClient = createGelatoSmartWalletClient({ account, apiKey: GELATO_API_KEY }); // Same execute pattern as 4337 ``` ### Thirdweb ERC-4337 ```ts import { createThirdwebClient, sendTransaction, prepareTransaction } from "thirdweb"; import { viemAdapter, smartWallet } from "thirdweb/wallets"; import { sepolia } from "thirdweb/chains"; const thirdwebClient = createThirdwebClient({ clientId: THIRDWEB_CLIENT_ID }); const personalAccount = viemAdapter.walletClient.fromViem({ walletClient: viemClient }); const wallet = smartWallet({ chain: sepolia, sponsorGas: true }); const smartAccount = await wallet.connect({ client: thirdwebClient, personalAccount }); const tx = prepareTransaction({ to: "0x...", value: 0n, chain: sepolia, client: thirdwebClient }); await sendTransaction({ account: smartAccount, transaction: tx }); ``` ### Porto EIP-7702 Porto operates on Base Sepolia with a unique EOA-to-smart-account upgrade flow. See `examples-hub/web/with-react-nextjs/aa-porto-7702/` for the full implementation using `Account.from()`, `Key.createSecp256k1()`, and `RelayActions.prepareUpgradeAccount()`. ### Rhinestone ERC-4337 Rhinestone provides cross-chain account abstraction using `@rhinestone/sdk`. See `examples-hub/web/with-react-nextjs/aa-rhinestone-4337/` for cross-chain USDC transfers (Arbitrum->Base) with sponsored transactions. --- ## 8. Connector Integrations ### Wagmi Connector ```ts // src/config/wagmi.ts import { paraConnector } from "@getpara/wagmi-v2-integration"; import { ParaWeb } from "@getpara/react-sdk-lite"; // or @getpara/react-sdk import { createConfig, http, cookieStorage, createStorage } from "wagmi"; import { sepolia } from "wagmi/chains"; // Initialize ParaWeb (not ParaProvider - connector manages its own UI) const para = new ParaWeb(Environment.BETA, API_KEY); const connector = paraConnector({ para, appName: "My App", chains: [sepolia], queryClient, authLayout: ["AUTH:FULL", "EXTERNAL:FULL"], oAuthMethods: ["APPLE", "DISCORD", "FACEBOOK", "FARCASTER", "GOOGLE", "TWITTER"], disableEmailLogin: false, disablePhoneLogin: false, logo: "/logo.svg", onRampTestMode: true, recoverySecretStepEnabled: true, twoFactorAuthEnabled: false, theme: { foregroundColor: "#222222", backgroundColor: "#FFFFFF", accentColor: "#888888", mode: "light", borderRadius: "none", font: "Inter", }, }); export const wagmiConfig = createConfig({ chains: [sepolia], connectors: [connector, injected(), metaMask(), coinbaseWallet()], ssr: true, storage: createStorage({ storage: cookieStorage }), transports: { [sepolia.id]: http(RPC_URL) }, }); ``` Important: The Wagmi connector uses `@getpara/react-sdk-lite` (not the full `@getpara/react-sdk`) to avoid bundle bloat, since the connector provides its own modal. ### RainbowKit ```ts // src/client/wagmi.ts import { getParaWallet } from "@getpara/rainbowkit-wallet"; import { connectorsForWallets } from "@rainbow-me/rainbowkit"; import { createConfig, http } from "wagmi"; import { sepolia } from "wagmi/chains"; const paraWallet = getParaWallet({ para, // ParaWeb instance chains: [sepolia], appName: "My App", // Same modal config options as paraConnector: oAuthMethods, theme, etc. }); const connectors = connectorsForWallets( [{ groupName: "Para", wallets: [paraWallet] }], { appName: "My App", projectId: WALLETCONNECT_PROJECT_ID } ); export const wagmiConfig = createConfig({ chains: [sepolia], connectors, transports: { [sepolia.id]: http(RPC_URL) }, }); // Providers: WagmiProvider + QueryClientProvider + RainbowKitProvider // Then use wagmi hooks: useSignMessage(), useSendTransaction(), etc. ``` ### Graz (Cosmos) ```tsx // src/context/Provider.tsx import { ParaGrazConnector } from "@getpara/graz-integration"; import { ParaWeb, Environment } from "@getpara/react-sdk-lite"; import { GrazProvider, defineChainInfo, type ParaGrazConfig } from "graz"; const para = new ParaWeb(Environment.BETA, API_KEY); const cosmosTestnet = defineChainInfo({ chainId: "provider", chainName: "Cosmos ICS Provider Testnet", rpc: "https://rpc.provider-sentry-01.ics-testnet.polypore.xyz", rest: "https://rest.provider-sentry-01.ics-testnet.polypore.xyz", bip44: { coinType: 118 }, bech32Config: { bech32PrefixAccAddr: "cosmos", /* ... other prefixes */ }, stakeCurrency: { coinDenom: "ATOM", coinMinimalDenom: "uatom", coinDecimals: 6 }, currencies: [{ coinDenom: "ATOM", coinMinimalDenom: "uatom", coinDecimals: 6 }], feeCurrencies: [{ coinDenom: "ATOM", coinMinimalDenom: "uatom", coinDecimals: 6 }], }); const paraConfig: ParaGrazConfig = { paraWeb: para as ParaGrazConfig["paraWeb"], connectorClass: ParaGrazConnector, // Note: connectorClass, not connector instance modalProps: { appName: "My App" }, queryClient: queryClient, }; // Wrap your app: {children} ``` Note: `defineChainInfo` and `ParaGrazConfig` type are imported from `graz`, not from `@getpara/graz-integration`. --- ## 9. Session Management ### Check and keep alive ```ts // Client-side (React hooks) import { useAccount, useKeepSessionAlive } from "@getpara/react-sdk"; const { isConnected } = useAccount(); // Imperative const isActive = await para.isSessionActive(); if (isActive) { await para.keepSessionAlive(); } ``` ### Export / Import session (server transfer) ```ts // Client: export session string const sessionString = await para.exportSession(); // Send sessionString to server via API call // Server: import session const serverPara = new ParaServer(PARA_ENVIRONMENT, PARA_API_KEY); await serverPara.importSession(sessionString); // Server can now sign on behalf of the user const isActive = await serverPara.isSessionActive(); ``` ### Issue JWT ```ts // Client-side import { useIssueJwt } from "@getpara/react-sdk"; const { issueJwt } = useIssueJwt(); const { token, keyId } = await issueJwt(); // Send `token` to your server for verification // Imperative const { token, keyId } = await para.issueJWT(); ``` --- ## 10. ParaModal Configuration The `paraModalConfig` prop on `` (or the config object for `paraConnector`) accepts: ```ts interface ParaModalConfig { // Authentication layout authLayout?: ("AUTH:FULL" | "AUTH:CONDENSED" | "EXTERNAL:FULL" | "EXTERNAL:CONDENSED")[]; // Email / Phone login toggles disableEmailLogin?: boolean; disablePhoneLogin?: boolean; defaultAuthIdentifier?: string; // Pre-fill email/phone // OAuth providers oAuthMethods?: TOAuthMethod[]; // TOAuthMethod = "APPLE" | "DISCORD" | "FACEBOOK" | "FARCASTER" | "GOOGLE" | "TWITTER" | "TELEGRAM" // Branding logo?: string; // recommended 372x160px // Theme theme?: { foregroundColor?: string; backgroundColor?: string; accentColor?: string; darkForegroundColor?: string; darkBackgroundColor?: string; darkAccentColor?: string; overlayBackground?: string; mode?: "light" | "dark"; borderRadius?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | "full"; font?: string; oAuthLogoVariant?: "dark" | "light" | "default"; }; // Features onRampTestMode?: boolean; recoverySecretStepEnabled?: boolean; twoFactorAuthEnabled?: boolean; hideWallets?: boolean; // Hide wallet terminology isGuestModeEnabled?: boolean; // Enable guest login bareModal?: boolean; // No overlay backdrop embeddedModal?: boolean; // Embedded styling className?: string; // Custom CSS class // Account linking supportedAccountLinks?: ("EMAIL" | "PHONE" | "GOOGLE" | "EXTERNAL_WALLET")[]; // Step override currentStepOverride?: ModalStepProp; // Steps: AUTH_MAIN, AUTH_MORE, AWAITING_OAUTH, VERIFICATIONS, // BIOMETRIC_CREATION, PASSWORD_CREATION, SECRET, AWAITING_WALLET_CREATION, // ACCOUNT_MAIN, ACCOUNT_PROFILE, CHAIN_SWITCH, // EX_WALLET_MORE, EX_WALLET_SELECTED, // ADD_FUNDS_BUY, ADD_FUNDS_RECEIVE, ADD_FUNDS_WITHDRAW, // SETUP_2FA, VERIFY_2FA // Callbacks onModalStepChange?: (value: any) => void; onClose?: () => void; // Advanced overrides loginTransitionOverride?: (para: ParaWeb) => Promise; createWalletOverride?: (para: ParaWeb) => Promise<{ recoverySecret?: string; walletIds: any }>; } ``` > **Note:** Password and PIN screens render in an iframe and use the Developer Portal theme settings, not `paraModalConfig.theme`. --- ## 11. Mobile Setup Requirements ### Required Native Modules (Expo) ```json { "@craftzdog/react-native-buffer": "^6.1.0", "@getpara/react-native-wallet": "", "@peculiar/webcrypto": "^1.5.0", "@react-native-async-storage/async-storage": "^2.2.0", "react-native-keychain": "^10.0.0", "react-native-modpow": "^1.1.0", "react-native-passkey": "^3.3.2", "react-native-quick-base64": "^2.2.0", "react-native-quick-crypto": "^0.7.14", "react-native-worklets": "^0.5.1", "readable-stream": "^4.5.2" } ``` ### Metro Config (polyfills) ```js // metro.config.js const { getDefaultConfig } = require('expo/metro-config'); const config = getDefaultConfig(__dirname); config.resolver.extraNodeModules = { crypto: require.resolve('react-native-quick-crypto'), buffer: require.resolve('@craftzdog/react-native-buffer'), }; module.exports = config; ``` ### Babel Config ```js // babel.config.js module.exports = function (api) { api.cache(true); return { presets: [['babel-preset-expo', { jsxImportSource: 'nativewind' }], 'nativewind/babel'], plugins: ['react-native-worklets/plugin'], }; }; ``` ### iOS Passkey Setup For passkey support on iOS, you must configure your app's Associated Domains capability with a `webcredentials:` entry pointing to your domain. The domain must serve an `apple-app-site-association` file. See `examples-hub/mobile/with-expo-one-click-login/ios/` for an example Xcode project configuration. ### Key Init Option Always pass `{ disableWorkers: true }` when initializing `ParaMobile` - Web Workers are not available in React Native. --- ## 12. Vite Polyfill Configuration Vue and Svelte projects using Vite need `vite-plugin-node-polyfills` because the Para SDK uses Node.js built-in modules (`buffer`, `crypto`, `stream`). ```ts // vite.config.ts import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; // or svelte() import { nodePolyfills } from "vite-plugin-node-polyfills"; export default defineConfig({ plugins: [vue(), nodePolyfills()], }); ``` Install: ```bash npm install -D vite-plugin-node-polyfills ``` This is required for `@getpara/web-sdk`. The `@getpara/react-sdk` with Next.js does **not** need this (Next.js handles polyfills via `npx setup-para` postinstall script). --- ## 13. REST API Direct Usage For server-to-server integrations without the SDK, use the REST API directly. ### Base URLs | Environment | URL | |------------|-----| | Beta | `https://api.beta.getpara.com` | | Production | `https://api.getpara.com` | ### Authentication Header ``` X-API-Key: your_api_key X-Request-Id: # optional, for request tracing Content-Type: application/json ``` ### Endpoints ``` POST /v1/wallets - Create wallet GET /v1/wallets/{walletId} - Get wallet details POST /v1/wallets/{walletId}/sign-raw - Sign raw bytes (0x-prefixed hex) ``` ### Create Wallet Request ```json { "type": "EVM", "userIdentifier": "alice@example.com", "userIdentifierType": "EMAIL", "scheme": "DKLS" } ``` - `type`: `"EVM"` | `"SOLANA"` | `"COSMOS"` - `userIdentifierType`: `"EMAIL"` | `"PHONE"` | `"CUSTOM_ID"` | `"GUEST_ID"` | `"TELEGRAM"` | `"DISCORD"` | `"TWITTER"` - `scheme`: `"DKLS"` | `"CGGMP"` | `"ED25519"` (optional, defaults based on wallet type) - `cosmosPrefix`: string (optional, for Cosmos wallets) ### Sign Raw Request ```json { "data": "0xdeadbeef..." } ``` ### Error Codes | Code | Meaning | |------|---------| | 201 | Created | | 200 | Success | | 400 | Bad request (invalid params) | | 401 | Unauthorized (invalid API key) | | 404 | Not found | | 409 | Conflict (wallet already exists) | | 429 | Rate limited | | 500 | Server error | ### Example Node.js client ```ts const PARA_API_KEY = process.env.PARA_API_KEY; const BASE_URL = process.env.PARA_REST_BASE_URL ?? "https://api.beta.getpara.com"; async function callPara(path: string, options: { method?: string; body?: unknown } = {}): Promise { const { method = "GET", body } = options; const headers: Record = { "X-API-Key": PARA_API_KEY, "X-Request-Id": crypto.randomUUID(), }; if (body) headers["Content-Type"] = "application/json"; const res = await fetch(`${BASE_URL}${path}`, { method, headers, body: body ? JSON.stringify(body) : undefined, }); const data = await res.json(); if (!res.ok) throw new Error(`Para ${res.status}: ${JSON.stringify(data)}`); return data as T; } ``` --- ## 14. React Hook Reference ### CSS Import ParaModal requires its stylesheet: ```tsx import "@getpara/react-sdk/styles.css"; ``` Add this in your root layout or ParaProvider component. ### From `@getpara/react-sdk` **Account & Connection:** - `useAccount()` -> `{ isConnected, isConnecting, address, embedded }` - `embedded.wallets` contains wallet array - `useClient()` -> Para client instance (for passing to signer constructors) - `useIsFullyLoggedIn()` -> `boolean | undefined` - `useParaStatus()` -> `ParaStatus` (readiness and Farcaster Mini App detection) - `useModal()` -> `{ isOpen, openModal, closeModal }` - `useWallet()` -> `Wallet | null | undefined` (active wallet) - `useWalletState()` -> `{ selectedWallet, setSelectedWallet, updateSelectedWallet }` - `useLinkedAccounts()` -> `LinkedAccounts & { userId: string }` **Authentication:** - `useSignUpOrLogIn()` -> `{ signUpOrLogIn, signUpOrLogInAsync, isPending }` - `useVerifyOAuth()` -> `{ verifyOAuth, isPending }` - `useVerifyFarcaster()` -> `{ verifyFarcaster, isPending }` - `useVerifyNewAccount()` -> `{ verifyNewAccount, verifyNewAccountAsync }` - `useWaitForLogin()` -> `{ waitForLogin, isPending }` - `useWaitForWalletCreation()` -> `{ waitForWalletCreation, isPending }` - `useLoginExternalWallet()` -> `{ loginExternalWallet, loginExternalWalletAsync }` - `useLogout()` -> `{ logout, logoutAsync }` - `useAddAuthMethod()` -> `{ addCredential, addCredentialAsync }` - `useLinkAccount()` -> `{ linkAccount, isPending, error }` **Signing (low-level):** - `useSignMessage()` -> `{ signMessage, signMessageAsync }` - signs base64-encoded message with wallet ID - `useSignTransaction()` -> `{ signTransaction, signTransactionAsync }` **Session:** - `useKeepSessionAlive()` -> `{ keepSessionAlive, keepSessionAliveAsync }` - `useIssueJwt()` -> `{ issueJwt, issueJwtAsync }` -> `{ token, keyId }` **Wallet Management:** - `useCreateWallet()` -> `{ createWallet, createWalletAsync }` - `useCreateWalletPerType()` -> `{ createWalletPerType, createWalletPerTypeAsync }` - create wallets for multiple chain types - `useCreateGuestWallets()` -> `{ createGuestWallets, createGuestWalletsAsync }` - `useWalletBalance()` -> `string | null` - balance in native units ### From `@getpara/react-sdk/evm` EVM-specific hooks for direct Viem client access (requires `@getpara/viem-v2-integration` as a dependency): - `useViemClient({ address, walletClientConfig })` -> `{ viemClient }` - returns a Viem WalletClient pre-configured with the Para signer ```ts import { useAccount } from "@getpara/react-sdk"; import { useViemClient } from "@getpara/react-sdk/evm"; import { http } from "viem"; import { sepolia } from "viem/chains"; const { embedded } = useAccount(); const address = embedded?.wallets?.[0]?.address as `0x${string}`; const { viemClient } = useViemClient({ address, walletClientConfig: { chain: sepolia, transport: http() }, }); // viemClient.sendTransaction, viemClient.signMessage, etc. ``` This is the preferred way to use Viem in React - no need to import `createParaAccount` / `createParaViemClient` directly. ### From `@getpara/react-sdk/viem` - `useViemAccount({ address? })` -> `{ viemAccount: Account | null, isLoading }` - lower-level access to the viem Account without creating a full WalletClient ### From `@getpara/react-sdk/solana` - `useSolanaSigner({ rpc, walletId? })` -> `{ solanaSigner: SignerWalletAdapter | null, isLoading }` - for Solana Signers v2 integration ### From `@getpara/react-sdk/cosmos` - `useCosmjsProtoSigner({ prefix?, walletId?, messageSigningTimeoutMs? })` -> `{ protoSigner: OfflineDirectSigner | null, isLoading }` - for CosmJS proto signing - `useCosmjsAminoSigner({ prefix?, walletId?, messageSigningTimeoutMs? })` -> `{ aminoSigner: OfflineAminoSigner | null, isLoading }` - for CosmJS amino signing ```ts // CosmJS example using hooks import { useCosmjsProtoSigner } from "@getpara/react-sdk/cosmos"; import { SigningStargateClient } from "@cosmjs/stargate"; const { protoSigner } = useCosmjsProtoSigner({ prefix: "cosmos" }); const stargateClient = await SigningStargateClient.connectWithSigner(RPC_URL, protoSigner); ``` --- ## 15. Testing Credentials ### Beta Environment - **Environment**: `Environment.BETA` / `"BETA"` - **Portal base URL**: `https://app.beta.getpara.com` - **API base URL**: `https://api.beta.getpara.com` ### Test Email Pattern Use any email ending in `@test.getpara.com` (e.g., `dev@test.getpara.com`, `test1@test.getpara.com`). **Any OTP code works** (e.g., `123456`, `000000`). ### Test Phone Numbers Use US numbers (+1) with format `(area code)-555-xxxx` (e.g., `(425)-555-1234`, `(206)-555-9876`). **Any OTP code works**. ### User Limits 50 users per beta account. Delete test users via [Developer Portal](https://developer.getpara.com) -> Users section. Users can only be deleted in BETA; in production, wallets are permanent. ### Post-Install Setup Many Next.js examples include a `postinstall` script: ```json "postinstall": "npx setup-para" ``` This configures Next.js webpack to handle Para SDK's WASM and worker files. Always run it after `npm install`. --- ## 16. Examples Hub Directory Map ### Web - Framework Setup | Directory | Framework | SDK | Key Concept | |-----------|----------|-----|-------------| | `web/with-react-nextjs/para-modal/` | Next.js | `@getpara/react-sdk` | ParaProvider + ParaModal quickstart | | `web/with-react-vite/` | React + Vite | `@getpara/react-sdk` | Vite with React | | `web/with-svelte-vite/` | Svelte + Vite | `@getpara/web-sdk` | Imperative ParaWeb init | | `web/with-vue-vite/` | Vue + Vite | `@getpara/web-sdk` | Imperative ParaWeb init | | `web/with-react-tanstack-start/` | TanStack Start | `@getpara/react-sdk` | Full-stack meta-framework | | `web/with-chrome-extension/` | Chrome Ext | `@getpara/react-sdk` | Storage overrides | | `web/with-pwa/` | PWA | `@getpara/react-sdk` | Progressive Web App | ### Web - Authentication | Directory | Auth Method | |-----------|------------| | `web/with-react-nextjs/custom-email-auth/` | Email + passkey verification | | `web/with-react-nextjs/custom-phone-auth/` | Phone + OTP verification | | `web/with-react-nextjs/custom-oauth-auth/` | OAuth (Google, Apple, etc.) + Farcaster | | `web/with-react-nextjs/custom-combined-auth/` | All auth methods combined | ### Web - Signing Libraries | Directory | Library | Package | |-----------|---------|---------| | `web/with-react-nextjs/signer-viem-v2/` | Viem 2.x | `@getpara/viem-v2-integration` | | `web/with-react-nextjs/signer-ethers-v5/` | Ethers 5.x | `@getpara/ethers-v5-integration` | | `web/with-react-nextjs/signer-ethers-v6/` | Ethers 6.x | `@getpara/ethers-v6-integration` | | `web/with-react-nextjs/signer-solana-web3/` | Solana Web3.js | `@getpara/solana-web3.js-v1-integration` | | `web/with-react-nextjs/signer-solana-anchor/` | Anchor | `@getpara/solana-web3.js-v1-integration` | | `web/with-react-nextjs/signer-solana-signers-v2/` | Solana Signers v2 | `@getpara/solana-signers-v2-integration` | | `web/with-react-nextjs/signer-cosmjs/` | CosmJS | `@getpara/react-sdk` (uses `useCosmjsProtoSigner` from `/cosmos`) | ### Web - Connectors | Directory | Connector | Package | |-----------|-----------|---------| | `web/with-react-nextjs/connector-wagmi/` | Wagmi v2 | `@getpara/wagmi-v2-integration` + `@getpara/react-sdk-lite` | | `web/with-react-nextjs/connector-rainbowkit/` | RainbowKit | `@getpara/rainbowkit-wallet` | | `web/with-react-nextjs/connector-graz/` | Graz (Cosmos) | `@getpara/graz-integration` | | `web/with-react-nextjs/connector-reown-appkit/` | Reown AppKit | `@getpara/wagmi-v2-integration` | ### Web - Account Abstraction | Directory | Provider | Standard | |-----------|----------|----------| | `web/with-react-nextjs/aa-alchemy-4337/` | Alchemy | ERC-4337 | | `web/with-react-nextjs/aa-alchemy-7702/` | Alchemy | EIP-7702 | | `web/with-react-nextjs/aa-zerodev-4337/` | ZeroDev | ERC-4337 | | `web/with-react-nextjs/aa-zerodev-7702/` | ZeroDev | EIP-7702 | | `web/with-react-nextjs/aa-gelato-4337/` | Gelato | ERC-4337 | | `web/with-react-nextjs/aa-gelato-7702/` | Gelato | EIP-7702 | | `web/with-react-nextjs/aa-thirdweb-4337/` | Thirdweb | ERC-4337 | | `web/with-react-nextjs/aa-rhinestone-4337/` | Rhinestone | ERC-4337 | | `web/with-react-nextjs/aa-porto-7702/` | Porto | EIP-7702 | ### Web - Modal Variants | Directory | Chain Focus | |-----------|------------| | `web/with-react-nextjs/para-modal/` | Default (all chains) | | `web/with-react-nextjs/para-modal-evm/` | EVM only | | `web/with-react-nextjs/para-modal-solana/` | Solana only | | `web/with-react-nextjs/para-modal-cosmos/` | Cosmos only | | `web/with-react-nextjs/para-modal-multichain/` | Explicit multi-chain | | `web/with-react-nextjs/para-pregen-claim/` | Pre-generated wallet claiming | ### Server | Directory | Runtime | Key Features | |-----------|---------|-------------| | `server/with-node/` | Node.js | Pregen wallets, Viem/Ethers/Solana/CosmJS signing, Alchemy AA, ZeroDev AA | | `server/with-bun/` | Bun | Session-based signing, Alchemy/ZeroDev EIP-7702 | | `server/with-deno/` | Deno | Session-based signing, Alchemy/ZeroDev EIP-7702 | | `server/rest-with-node/` | Node.js | REST API direct usage (no SDK, raw fetch) | ### Mobile | Directory | Platform | Key Features | |-----------|----------|-------------| | `mobile/with-react-native/` | React Native | Standard RN setup | | `mobile/with-expo-one-click-login/` | Expo | One-click login, passkeys, native crypto polyfills | ### Advanced Patterns | Directory | Pattern | |-----------|---------| | `advanced-patterns/client-auth-server-sign/` | Client authenticates, exports session, server signs | | `advanced-patterns/with-bulk-pregen/` | Bulk wallet pre-generation with multi-chain claiming UI | ### DeFi Integrations | Directory | Integration | |-----------|------------| | `defi-integrations/with-jupiter-dex-api/` | Jupiter DEX (Solana) | | `defi-integrations/with-squid-router-api/` | Squid cross-chain router | | `defi-integrations/with-relay-bridge-api/` | Relay Protocol bridge | --- ## Docs - [Command Reference](https://docs.getpara.com/v2/cli/commands.md): Complete reference for all Para CLI commands - [Installation & Setup](https://docs.getpara.com/v2/cli/installation.md): Install the Para CLI and authenticate with your developer account - [Para CLI](https://docs.getpara.com/v2/cli/overview.md): Manage API keys, organizations, projects, and configuration from your terminal - [How Para Works](https://docs.getpara.com/v2/concepts/architecture.md): Para provides non-custodial embedded wallet infrastructure: secure key management, cross-app portability, and policy-based access control - [Audits & Compliance](https://docs.getpara.com/v2/concepts/compliance.md): Para's audit history, compliance posture, and regulatory classification for security and compliance teams - [Key Management](https://docs.getpara.com/v2/concepts/key-management.md): How Para's 2-of-2 MPC system protects private keys across generation, signing, and recovery - [Permissions Reference](https://docs.getpara.com/v2/concepts/permissions-reference.md): Complete schema reference for Para's permissions policy system: permission types, conditions, comparators, and examples - [Permissions & Access Control](https://docs.getpara.com/v2/concepts/permissions.md): Control exactly what each application can do with a user's wallet: scoped, transparent, and enforced server-side - [Security](https://docs.getpara.com/v2/concepts/security.md): How Para protects user assets with non-custodial key management, phishing-resistant authentication, and server-side enforcement - [Universal Wallets](https://docs.getpara.com/v2/concepts/universal-embedded-wallets.md): One wallet across your entire ecosystem. Users onboard once and use the same wallet in every connected application - [Agent Skill](https://docs.getpara.com/v2/developer-tools/ai-tooling/agent-skill.md): Give your AI coding agent full context on Para — setup, CLI, SDKs, and integration patterns - [Integrate Para Docs MCP with AI Tools](https://docs.getpara.com/v2/developer-tools/ai-tooling/mcp.md): Connect the Para Docs Mintlify MCP server to AI tools for direct documentation access and enhanced coding assistance - [AI Tooling](https://docs.getpara.com/v2/developer-tools/ai-tooling/overview.md): Connect Para to AI assistants, code editors, and agentic workflows - [Developer Tools](https://docs.getpara.com/v2/developer-tools/overview.md): CLI, AI integrations, and automation tools for building with Para - [Flutter SDK API](https://docs.getpara.com/v2/flutter/api/sdk.md): Complete API reference for Para Flutter SDK v2, including authentication, wallet management, and blockchain operations. Updated for 2.0.0 with comprehensive multi-chain support and passkey authentication. - [Mobile Examples](https://docs.getpara.com/v2/flutter/examples.md): Explore Para's mobile integration examples for Flutter - [Cosmos Integration](https://docs.getpara.com/v2/flutter/guides/cosmos.md): Sign transactions for Cosmos chains using Para's unified wallet architecture - [EVM Integration](https://docs.getpara.com/v2/flutter/guides/evm.md): Transfer ETH and interact with EVM chains using Para's unified wallet architecture - [External Wallets](https://docs.getpara.com/v2/flutter/guides/external-wallets.md): Connect and authenticate users with external wallets like MetaMask and Phantom in Flutter. - [Wallet Pregeneration](https://docs.getpara.com/v2/flutter/guides/pregen.md): Create and manage pregenerated wallets for users in Flutter applications - [Flutter Session Management](https://docs.getpara.com/v2/flutter/guides/sessions.md): Guide to managing authentication sessions in Para for Flutter applications - [Social Login](https://docs.getpara.com/v2/flutter/guides/social-login.md): Hook Para social login into the unified Flutter auth flow - [Solana Integration](https://docs.getpara.com/v2/flutter/guides/solana.md): Sign Solana transactions using Para's unified wallet architecture - [Flutter SDK Overview](https://docs.getpara.com/v2/flutter/overview.md): Para Flutter SDK documentation for cross-platform wallet integration - [Setup](https://docs.getpara.com/v2/flutter/setup.md): Step-by-step guide for integrating the Para Flutter SDK into your mobile application - [Flutter Troubleshooting Guide](https://docs.getpara.com/v2/flutter/troubleshooting.md): Common issues and solutions when integrating Para with Flutter applications - [Account Abstraction](https://docs.getpara.com/v2/general/account-abstraction.md): Explore account abstraction integration options with Para across different platforms - [Go Live Checklist](https://docs.getpara.com/v2/general/checklist.md): A checklist to help you go live with the Para SDK. - [Glossary](https://docs.getpara.com/v2/general/glossary.md): Glossary of key terms. - [iOS App Store Submission](https://docs.getpara.com/v2/general/ios-app-store-submission.md): A friendly checklist to get your Para-powered iOS app through App Review without surprises. - [Migrating from Capsule to Para](https://docs.getpara.com/v2/general/migration-from-capsule.md): Guide for migrating from @usecapsule/* packages to @getpara/* packages - [Wallet Pregeneration](https://docs.getpara.com/v2/general/pregen.md): Overview of generating pregenerated wallets for Para - [Deploy Para Integration to Production](https://docs.getpara.com/v2/general/production-deployment.md): Transition your Para integration from development to production with updated configurations and security settings - [Telegram Bots & Mini-Apps](https://docs.getpara.com/v2/general/telegram.md): A user-friendly guide to quickly integrate Telegram Apps - [Troubleshooting](https://docs.getpara.com/v2/general/troubleshooting.md): Something not working quite right? This is the section for you! - [User Data Management](https://docs.getpara.com/v2/general/user-data.md): A comprehensive guide to managing user data when integrating Para into your application - [Webhooks](https://docs.getpara.com/v2/general/webhooks.md): Receive real-time notifications when events occur in your Para integration - [Chain Support](https://docs.getpara.com/v2/introduction/chain-support.md): Build on any supported chain. - [Changelog](https://docs.getpara.com/v2/introduction/changelog.md): Release notes and version history for Para Web SDK - [Examples Hub](https://docs.getpara.com/v2/introduction/examples.md): Explore Para's examples hub for integration patterns across web, mobile, and specific use cases - [Framework Support](https://docs.getpara.com/v2/introduction/framework-support.md): Supported Features Across Para's Frameworks - [Migrating from Para v1.x to v2.0](https://docs.getpara.com/v2/introduction/migration-to-alpha.md): Guide for migrating from Para version 1.x to Para's version 2.0 release - [Migrate to Para](https://docs.getpara.com/v2/introduction/migration-to-para.md): Already have some users in another auth or wallet system? Para makes it easy to migrate! - [Welcome](https://docs.getpara.com/v2/introduction/welcome.md): Para is the most comprehensive wallet and authentication suite for crypto and fintech developers. - [What's New in Para v2.0](https://docs.getpara.com/v2/introduction/whats-new.md): A high-level overview of new features and improvements in Para v2.0 - [React Native & Expo SDK](https://docs.getpara.com/v2/react-native/api/sdk.md): Documentation for the Para SDK in React Native and Expo applications - [Mobile Examples](https://docs.getpara.com/v2/react-native/examples.md): Explore Para's mobile integration examples for React Native and Expo - [Account Abstraction](https://docs.getpara.com/v2/react-native/guides/account-abstraction.md): Implement ERC-4337 and EIP-7702 Account Abstraction in React Native with Para - [Email & Phone Authentication](https://docs.getpara.com/v2/react-native/guides/add-email-phone.md): Authenticate users with email or phone in React Native and Expo using Para's SDK - [Add Native Passkeys](https://docs.getpara.com/v2/react-native/guides/add-passkeys.md): Add native passkey authentication to your React Native or Expo app for enhanced security - [Add Password or PIN](https://docs.getpara.com/v2/react-native/guides/add-password-pin.md): Add password or PIN authentication to your React Native or Expo app - [Social Login](https://docs.getpara.com/v2/react-native/guides/add-social-login.md): Authenticate users with OAuth providers like Google, Apple, and Discord in React Native and Expo - [Cosmos Support](https://docs.getpara.com/v2/react-native/guides/cosmos.md): Using Cosmos libraries like CosmJS in React Native with Para's SDK - [Custom Storage with MMKV](https://docs.getpara.com/v2/react-native/guides/custom-storage.md): Configure Para client to use MMKV storage in React Native applications - [EVM Support](https://docs.getpara.com/v2/react-native/guides/evm.md): Using EVM libraries like Ethers.js and Viem in React Native with Para's SDK - [Export Private Key](https://docs.getpara.com/v2/react-native/guides/export-private-key.md): Allow your users to export the private key for their wallets. - [Guest Mode](https://docs.getpara.com/v2/react-native/guides/guest-mode.md): Allow users to use your app via guest wallets without signing up. - [ParaProvider](https://docs.getpara.com/v2/react-native/guides/hooks/para-provider.md): React Native context provider for Para SDK integration - [useAccount](https://docs.getpara.com/v2/react-native/guides/hooks/use-account.md): Hook for retrieving the current user's account and connection status - [useAuthenticateWithEmailOrPhone](https://docs.getpara.com/v2/react-native/guides/hooks/use-authenticate-with-email-or-phone.md): Hook that handles the full email or phone authentication flow in one call - [useAuthenticateWithOAuth](https://docs.getpara.com/v2/react-native/guides/hooks/use-authenticate-with-o-auth.md): Hook that handles the full OAuth authentication flow in one call - [useClaimPregenWallets](https://docs.getpara.com/v2/react-native/guides/hooks/use-claim-pregen-wallets.md): Hook for claiming pregenerated wallets after a user signs up - [useClient](https://docs.getpara.com/v2/react-native/guides/hooks/use-client.md): Hook for accessing the Para client instance - [useCreateGuestWallets](https://docs.getpara.com/v2/react-native/guides/hooks/use-create-guest-wallets.md): Hook for creating wallets for unauthenticated guest users - [useCreatePregenWalletPerType](https://docs.getpara.com/v2/react-native/guides/hooks/use-create-pregen-wallet-per-type.md): Hook for creating pregenerated wallets for multiple chain types - [useCreatePregenWallet](https://docs.getpara.com/v2/react-native/guides/hooks/use-create-pregen-wallet.md): Hook for creating a pregenerated wallet for a user before they sign up - [useCreateWalletPerType](https://docs.getpara.com/v2/react-native/guides/hooks/use-create-wallet-per-type.md): Hook for creating wallets for multiple chain types at once - [useCreateWallet](https://docs.getpara.com/v2/react-native/guides/hooks/use-create-wallet.md): Hook for creating a new wallet - [useEnable2fa](https://docs.getpara.com/v2/react-native/guides/hooks/use-enable-2fa.md): Hook for enabling two-factor authentication with a verification code - [useExportPrivateKey](https://docs.getpara.com/v2/react-native/guides/hooks/use-export-private-key.md): Hook for exporting a wallet's private key via the Para portal - [useHasPregenWallet](https://docs.getpara.com/v2/react-native/guides/hooks/use-has-pregen-wallet.md): Hook for checking whether a pregenerated wallet exists for a given ID - [useIsFullyLoggedIn](https://docs.getpara.com/v2/react-native/guides/hooks/use-is-fully-logged-in.md): Hook for checking whether the user is fully authenticated - [useIssueJwt](https://docs.getpara.com/v2/react-native/guides/hooks/use-issue-jwt.md): Hook for issuing a JWT token for backend authentication - [useKeepSessionAlive](https://docs.getpara.com/v2/react-native/guides/hooks/use-keep-session-alive.md): Hook for extending the current session to prevent automatic logout - [useLoginExternalWallet](https://docs.getpara.com/v2/react-native/guides/hooks/use-login-external-wallet.md): Hook for initiating login with an external wallet via SIWE - [useLogout](https://docs.getpara.com/v2/react-native/guides/hooks/use-logout.md): Hook for logging out the current user - [useParaStatus](https://docs.getpara.com/v2/react-native/guides/hooks/use-para-status.md): Hook for retrieving the initialization status of the Para client - [useResendVerificationCode](https://docs.getpara.com/v2/react-native/guides/hooks/use-resend-verification-code.md): Hook for resending a verification code - [useSetup2fa](https://docs.getpara.com/v2/react-native/guides/hooks/use-setup-2fa.md): Hook for setting up two-factor authentication - [useSignMessage](https://docs.getpara.com/v2/react-native/guides/hooks/use-sign-message.md): Hook for signing a message with a wallet - [useSignTransaction](https://docs.getpara.com/v2/react-native/guides/hooks/use-sign-transaction.md): Hook for signing a transaction with a wallet - [useSignUpOrLogIn](https://docs.getpara.com/v2/react-native/guides/hooks/use-sign-up-or-log-in.md): Hook for initiating signup or login with email or phone - [useUpdatePregenWalletIdentifier](https://docs.getpara.com/v2/react-native/guides/hooks/use-update-pregen-wallet-identifier.md): Hook for updating the identifier associated with a pregenerated wallet - [useVerify2fa](https://docs.getpara.com/v2/react-native/guides/hooks/use-verify-2fa.md): Hook for verifying a two-factor authentication code at login - [useVerifyExternalWallet](https://docs.getpara.com/v2/react-native/guides/hooks/use-verify-external-wallet.md): Hook for verifying an external wallet login - [useVerifyFarcaster](https://docs.getpara.com/v2/react-native/guides/hooks/use-verify-farcaster.md): Hook for verifying Farcaster authentication - [useVerifyNewAccount](https://docs.getpara.com/v2/react-native/guides/hooks/use-verify-new-account.md): Hook for verifying a new account with a verification code - [useVerifyOAuth](https://docs.getpara.com/v2/react-native/guides/hooks/use-verify-o-auth.md): Hook for verifying OAuth authentication - [useVerifyTelegram](https://docs.getpara.com/v2/react-native/guides/hooks/use-verify-telegram.md): Hook for verifying Telegram authentication - [useWaitForLogin](https://docs.getpara.com/v2/react-native/guides/hooks/use-wait-for-login.md): Hook that polls until a login flow is complete - [useWaitForSignup](https://docs.getpara.com/v2/react-native/guides/hooks/use-wait-for-signup.md): Hook that polls until a signup flow is complete - [useWaitForWalletCreation](https://docs.getpara.com/v2/react-native/guides/hooks/use-wait-for-wallet-creation.md): Hook that polls until wallet creation is complete - [useWallet](https://docs.getpara.com/v2/react-native/guides/hooks/use-wallet.md): Hook for retrieving the currently selected wallet - [Permissions](https://docs.getpara.com/v2/react-native/guides/permissions.md): Handle transaction approval flows in React Native apps - [Wallet Pregeneration](https://docs.getpara.com/v2/react-native/guides/pregen.md): Create and manage pregenerated wallets for users in React Native and Expo applications - [JWT Token Management](https://docs.getpara.com/v2/react-native/guides/sessions-jwt.md): Issuing and verifying JWT tokens for Para session attestation - [React Native Session Management](https://docs.getpara.com/v2/react-native/guides/sessions.md): Guide to managing authentication sessions in Para for React Native applications - [Solana Support in React Native](https://docs.getpara.com/v2/react-native/guides/solana.md): Using Para with Solana Web3.js and Anchor in React Native applications - [Claim Staking Rewards](https://docs.getpara.com/v2/react-native/guides/web3-operations/cosmos/claim-rewards.md): Claim accumulated staking rewards from delegated validators - [Configure RPC Nodes with Cosmos Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/cosmos/configure-rpc.md): Set up and configure Cosmos RPC endpoints and clients using CosmJS - [Execute Transactions with Cosmos Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/cosmos/execute-transactions.md): Interact with Cosmos modules and execute complex transactions using CosmJS - [Sponsor Gas Fees on Cosmos](https://docs.getpara.com/v2/react-native/guides/web3-operations/cosmos/gas-sponsorship.md): Learn how to implement gas sponsorship on Cosmos networks using fee grants with Para - [IBC Cross-Chain Transfers](https://docs.getpara.com/v2/react-native/guides/web3-operations/cosmos/ibc-transfers.md): Transfer tokens between Cosmos chains using Inter-Blockchain Communication - [Query Wallet Balances with Cosmos Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/cosmos/query-balances.md): Check account balances and token holdings using CosmJS with Para wallets - [Query Validator Information](https://docs.getpara.com/v2/react-native/guides/web3-operations/cosmos/query-validators.md): Get validator details, commission rates, and staking APY - [Send Tokens with Cosmos Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/cosmos/send-tokens.md): Transfer native tokens and execute IBC transfers using CosmJS with Para wallets - [Setup Cosmos Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/cosmos/setup-libraries.md): Install and configure CosmJS for use with Para SDK on Cosmos chains in React Native - [Sign Messages with Cosmos Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/cosmos/sign-messages.md): Sign direct and amino messages using CosmJS with Para wallets - [Stake Tokens to Validators](https://docs.getpara.com/v2/react-native/guides/web3-operations/cosmos/stake-tokens.md): Delegate tokens to Cosmos validators for staking rewards - [Verify Signatures with Cosmos Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/cosmos/verify-signatures.md): Verify message and transaction signatures using CosmJS - [Account Abstraction Integrations](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/account-abstraction.md): Set up smart accounts with Para's unified SDK interface across all supported AA providers on React Native - [Configure RPC Endpoints](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/configure-rpc.md): Set up custom RPC endpoints and chains with Web3 libraries on React Native - [Estimate Gas for Transactions](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/estimate-gas.md): Calculate gas costs for transactions including EIP-1559 gas pricing on React Native - [Execute Transactions](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/execute-transactions.md): Execute arbitrary transactions with lifecycle management using Web3 libraries on React Native - [Get Transaction Receipt](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/get-transaction-receipt.md): Check transaction status, confirmations, and retrieve receipt details on React Native - [Interact with Contracts](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/interact-with-contracts.md): Read and write smart contract data and handle events using Web3 libraries on React Native - [Manage Token Allowances](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/manage-allowances.md): Approve tokens, check allowances, and implement permit signatures on React Native - [Query Wallet Balances](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/query-balances.md): Check ETH and ERC-20 token balances using Web3 libraries with Para on React Native - [Send Tokens](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/send-tokens.md): Transfer ETH and ERC-20 tokens using Web3 libraries with Para on React Native - [Setup EVM Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/setup-libraries.md): Configure Ethers.js or Viem to work with Para's secure wallet infrastructure on React Native - [Sign Messages](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/sign-messages.md): Sign plain text messages for authentication or verification with Web3 libraries on React Native - [Sign Typed Data (EIP-712)](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/sign-typed-data.md): Sign structured data using the EIP-712 standard for improved security and UX on React Native - [Verify Signatures with EVM Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/verify-signatures.md): Verify message and transaction signatures using Ethers or Viem on React Native - [Watch Contract Events](https://docs.getpara.com/v2/react-native/guides/web3-operations/evm/watch-events.md): Listen to smart contract events and parse event logs in real-time on React Native - [Get Wallet Data](https://docs.getpara.com/v2/react-native/guides/web3-operations/get-wallet-address.md): Access wallet addresses and information using Para React Native hooks - [Sign Messages with Para](https://docs.getpara.com/v2/react-native/guides/web3-operations/sign-with-para.md): Learn how to sign a \"Hello, Para!\" message using the Para React Native SDK - [Set Compute Units and Priority Fees](https://docs.getpara.com/v2/react-native/guides/web3-operations/solana/compute-units.md): Configure compute budget and priority fees for Solana transactions - [Configure RPC Endpoints with Solana Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/solana/configure-rpc.md): Set up and configure Solana RPC endpoints and connections using Web3.js or Anchor - [Execute Transactions with Solana Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/solana/execute-transactions.md): Interact with Solana programs and execute complex transactions using Web3.js or Anchor - [Get Solana Transaction Status](https://docs.getpara.com/v2/react-native/guides/web3-operations/solana/get-transaction-status.md): Check transaction confirmation status and finality on Solana - [Interact with Solana Programs](https://docs.getpara.com/v2/react-native/guides/web3-operations/solana/interact-with-programs.md): Call program instructions and work with Anchor IDLs using Para - [Manage SPL Token Accounts](https://docs.getpara.com/v2/react-native/guides/web3-operations/solana/manage-token-accounts.md): Create, close, and manage SPL token accounts on Solana - [Query Wallet Balances with Solana Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/solana/query-balances.md): Check SOL and SPL token balances using Solana Web3.js or Anchor with Para wallets - [Send Tokens with Solana Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/solana/send-tokens.md): Transfer SOL tokens using Solana Web3.js or Anchor with Para wallets - [Setup Solana Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/solana/setup-libraries.md): Install and configure Solana Web3.js, @solana/kit, or Anchor for use with Para SDK on React Native - [Sign Messages with Solana Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/solana/sign-messages.md): Sign text and binary messages using Solana Web3.js or Anchor with Para - [Verify Signatures with Solana Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/solana/verify-signatures.md): Verify message and transaction signatures using Solana Web3.js or Anchor - [Configure Horizon Endpoints with Stellar Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/stellar/configure-rpc.md): Set up and configure Stellar Horizon API endpoints for different networks in React Native - [Execute Transactions with Stellar Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/stellar/execute-transactions.md): Build and sign complex Stellar transactions including multi-op, fee bumps, and Soroban auth in React Native - [Query Wallet Balances with Stellar Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/stellar/query-balances.md): Check XLM and token balances using the Stellar SDK with Para wallets in React Native - [Send Tokens with Stellar Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/stellar/send-tokens.md): Transfer XLM using the Stellar SDK with Para wallets in React Native - [Setup Stellar Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/stellar/setup-libraries.md): Install and configure the Stellar SDK for use with Para SDK in React Native - [Sign Messages with Stellar Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/stellar/sign-messages.md): Sign arbitrary bytes for verification using the Stellar SDK with Para in React Native - [Verify Signatures with Stellar Libraries](https://docs.getpara.com/v2/react-native/guides/web3-operations/stellar/verify-signatures.md): Verify Ed25519 signatures from Stellar addresses in React Native - [Overview](https://docs.getpara.com/v2/react-native/overview.md): An introduction to mobile integrations with Para - [React Native Quickstart](https://docs.getpara.com/v2/react-native/quickstart.md): Get started with Para's React Native SDK in minutes - [Expo](https://docs.getpara.com/v2/react-native/setup/expo.md): Set up the Para SDK in an Expo project. - [Bare Workflow](https://docs.getpara.com/v2/react-native/setup/react-native.md): Set up the Para SDK in a React Native bare workflow project. - [React Native and Expo Troubleshooting](https://docs.getpara.com/v2/react-native/troubleshooting.md): Resolving integration issues for Para in React Native and Expo environments - [Web Examples](https://docs.getpara.com/v2/react/examples.md): Explore Para's web integration examples across popular frameworks - [Account Linking](https://docs.getpara.com/v2/react/guides/account-linking.md): Allow your users to link their external accounts with their Para account - [Configure Content Security Policy (CSP)](https://docs.getpara.com/v2/react/guides/csp.md): Configure Content Security Policy for Para SDK in Next.js and Vite applications - [Custom Chains](https://docs.getpara.com/v2/react/guides/custom-chains.md): Learn how to use custom EVM, SVM, or Cosmos chains in your application - [Custom Auth UI with React Hooks](https://docs.getpara.com/v2/react/guides/custom-ui-simplified.md): Build custom authentication UI with Para's simplified React hooks that handle the entire auth flow in a single call - [Custom Auth UI with Web SDK](https://docs.getpara.com/v2/react/guides/custom-ui-web-sdk.md): Build custom authentication UI using the Para Web SDK directly — works with vanilla JS, Vue, Svelte, or any framework - [Configure Balance Display](https://docs.getpara.com/v2/react/guides/customization/balances.md): Learn how to configure and display balances in the Para Modal, including Aggregated and Custom Asset modes, and use the useProfileBalance hook for programmatic access. - [Developer Portal Email Branding](https://docs.getpara.com/v2/react/guides/customization/developer-portal-email-branding.md): Customize the appearance of Welcome and OTP emails with your brand. - [Developer Portal Payment Integration](https://docs.getpara.com/v2/react/guides/customization/developer-portal-payments.md): Configure payment providers and transaction features to enable crypto buying, selling, and wallet funding for your users. These settings control which options appear in your Para integration. - [Developer Portal Security Settings](https://docs.getpara.com/v2/react/guides/customization/developer-portal-security.md): Configure authentication methods, session management, and transaction permissions - [Get Your API Key](https://docs.getpara.com/v2/react/guides/customization/developer-portal-setup.md): Get your API key and configure your Para integration through the developer portal. - [Export Private Key](https://docs.getpara.com/v2/react/guides/customization/export-private-key.md): You can allow your users to export the private key for their wallets if they choose, letting them take custody over their assets.. - [Guest Mode](https://docs.getpara.com/v2/react/guides/customization/guest-mode.md): Allow users to use your app via guest wallets without signing up. - [Configure Authentication](https://docs.getpara.com/v2/react/guides/customization/modal-authentication.md): Configure OAuth providers, email/phone login, authentication layout, and guest mode for the Para Modal. - [Handle Modal Events](https://docs.getpara.com/v2/react/guides/customization/modal-events.md): Handle modal events, callbacks, and configure advanced modal behavior options. - [Configure Security](https://docs.getpara.com/v2/react/guides/customization/modal-security.md): Configure two-factor authentication, recovery secrets, and modal step controls for the Para Modal. - [Style the Modal](https://docs.getpara.com/v2/react/guides/customization/modal-theming.md): Customize the appearance of the Para Modal with themes, colors, fonts, and custom palettes. - [Customization Basics](https://docs.getpara.com/v2/react/guides/customization/modal.md): Learn how to customize the appearance and behavior of the Para Modal to match your application's design. - [Overview](https://docs.getpara.com/v2/react/guides/customization/overview.md): Learn how to customize Para to match your brand and user needs. - [Modal Customization](https://docs.getpara.com/v2/react/guides/customizing.md): Learn how to customize Para for your application - [Cosmos Wallets With React SDK Lite](https://docs.getpara.com/v2/react/guides/external-wallets/cosmos-lite.md) - [Connect Cosmos Wallets](https://docs.getpara.com/v2/react/guides/external-wallets/cosmos.md): Learn how to combine the Para Modal with Cosmos wallets. - [EVM Wallets With React SDK Lite](https://docs.getpara.com/v2/react/guides/external-wallets/evm-lite.md) - [Connect EVM Wallets](https://docs.getpara.com/v2/react/guides/external-wallets/evm.md): Learn how to combine the Para Modal with EVM wallets. - [Connect Multichain Wallets](https://docs.getpara.com/v2/react/guides/external-wallets/multichain.md): Learn how to combine EVM, Solana, and Cosmos wallets with the Para Modal. - [Overview](https://docs.getpara.com/v2/react/guides/external-wallets/overview.md): Learn how to use Para with external wallets like MetaMask, Phantom, and Keplr. - [Solana Wallets With React SDK Lite](https://docs.getpara.com/v2/react/guides/external-wallets/solana-lite.md) - [Connect Solana Wallets](https://docs.getpara.com/v2/react/guides/external-wallets/solana.md): Learn how to combine the Para Modal with Solana wallets. - [React Hooks](https://docs.getpara.com/v2/react/guides/hooks.md): State management and SDK interactions using Para's React hooks - [ParaProvider](https://docs.getpara.com/v2/react/guides/hooks/para-provider.md): React context provider for Para SDK integration - [useAccount](https://docs.getpara.com/v2/react/guides/hooks/use-account.md): Hook for retrieving the current embedded account and connected external wallets - [useAddAuthMethod](https://docs.getpara.com/v2/react/guides/hooks/use-add-auth-method.md): React hook for adding a passkey, password, or PIN to an existing user account - [useClient](https://docs.getpara.com/v2/react/guides/hooks/use-client.md): Hook for accessing the Para client instance - [useCosmjsAminoSigner](https://docs.getpara.com/v2/react/guides/hooks/use-cosmjs-amino-signer.md): Hook for retrieving a Cosmjs Amino signer for a Para wallet - [useCosmjsProtoSigner](https://docs.getpara.com/v2/react/guides/hooks/use-cosmjs-proto-signer.md): Hook for retrieving a Cosmjs Proto signer for a Para wallet - [useCreateWallet](https://docs.getpara.com/v2/react/guides/hooks/use-create-wallet.md): Hook for creating new wallets for the authenticated user - [useIssueJwt](https://docs.getpara.com/v2/react/guides/hooks/use-issue-jwt.md): Hook for issuing JWT tokens for session verification - [useKeepSessionAlive](https://docs.getpara.com/v2/react/guides/hooks/use-keep-session-alive.md): Hook for maintaining active user sessions - [useLogout](https://docs.getpara.com/v2/react/guides/hooks/use-logout.md): Hook for logging out the current user - [useModal](https://docs.getpara.com/v2/react/guides/hooks/use-modal.md): Hook for controlling the Para modal - [useSignMessage](https://docs.getpara.com/v2/react/guides/hooks/use-sign-message.md): Hook for signing messages with a wallet - [useSignTransaction](https://docs.getpara.com/v2/react/guides/hooks/use-sign-transaction.md): Hook for signing blockchain transactions - [useSignUpOrLogIn](https://docs.getpara.com/v2/react/guides/hooks/use-sign-up-or-login.md): Hook for initiating the authentication flow - [useSolanaSigner](https://docs.getpara.com/v2/react/guides/hooks/use-solana-signer.md): Hook for retrieving a Solana signer for a Para wallet - [useStellarSigner](https://docs.getpara.com/v2/react/guides/hooks/use-stellar-signer.md): Hook for retrieving a Stellar signer for a Para wallet - [useVerifyNewAccount](https://docs.getpara.com/v2/react/guides/hooks/use-verify-new-account.md): Hook for verifying new accounts with verification codes - [useViemAccount](https://docs.getpara.com/v2/react/guides/hooks/use-viem-account.md): Hook for retrieving a Viem account for a Para wallet - [useViemClient](https://docs.getpara.com/v2/react/guides/hooks/use-viem-client.md): Hook for retrieving a Viem client for a Viem client for a Para wallet - [useWalletBalance](https://docs.getpara.com/v2/react/guides/hooks/use-wallet-balance.md): Hook for retrieving the balance of the selected wallet - [useWalletState](https://docs.getpara.com/v2/react/guides/hooks/use-wallet-state.md): Hook for managing the currently selected wallet - [useWallet](https://docs.getpara.com/v2/react/guides/hooks/use-wallet.md): Hook for retrieving the currently selected wallet - [Migrating from Reown to Para](https://docs.getpara.com/v2/react/guides/migration-from-reown.md): Step-by-step guide for migrating your Reown (WalletConnect) application to Para SDK - [Migrating from Thirdweb to Para](https://docs.getpara.com/v2/react/guides/migration-from-thirdweb.md): Step-by-step guide for migrating your Thirdweb application to Para SDK - [Migrating from Web3Modal to Para](https://docs.getpara.com/v2/react/guides/migration-from-walletconnect.md): Step-by-step guide for migrating your Web3Modal (WalletConnect) application to Para SDK - [Migration Guides](https://docs.getpara.com/v2/react/guides/migrations.md): Migrate your existing wallet integration to Para SDK - [Permissions](https://docs.getpara.com/v2/react/guides/permissions.md): Configure user-facing transaction confirmation dialogs - [Wallet Pregeneration](https://docs.getpara.com/v2/react/guides/pregen.md): Learn how to create and manage pregenerated wallets for users with Para's SDK - [Reown AppKit Integration](https://docs.getpara.com/v2/react/guides/reown-appkit.md): Integrate Para as the wallet provider in Reown AppKit - [JWT Token Management](https://docs.getpara.com/v2/react/guides/sessions-jwt.md): Issuing and verifying JWT tokens for Para session attestation - [Session Lifecycle](https://docs.getpara.com/v2/react/guides/sessions-lifecycle.md): Managing the lifecycle of authentication sessions in Para - [Pregenerated Wallet Sessions](https://docs.getpara.com/v2/react/guides/sessions-pregen.md): Session management for Para pregenerated wallets - [Session Transfer](https://docs.getpara.com/v2/react/guides/sessions-transfer.md): Exporting Para sessions for server-side operations - [Web Session Management](https://docs.getpara.com/v2/react/guides/sessions.md): Overview of authentication session management in Para for web applications - [Upgrade Auth Methods](https://docs.getpara.com/v2/react/guides/upgrade-auth-methods.md): Allow users to add a passkey, password, or PIN to their account for enhanced security - [Wagmi Connector Integration](https://docs.getpara.com/v2/react/guides/wagmi-connector.md): Use Para as a Wagmi connector to build custom wallet connection interfaces - [Claim Staking Rewards](https://docs.getpara.com/v2/react/guides/web3-operations/cosmos/claim-rewards.md): Claim accumulated staking rewards from delegated validators - [Configure RPC Nodes with Cosmos Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/cosmos/configure-rpc.md): Set up and configure Cosmos RPC endpoints and clients using CosmJS - [Execute Transactions with Cosmos Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/cosmos/execute-transactions.md): Interact with Cosmos modules and execute complex transactions using CosmJS - [Sponsor Gas Fees on Cosmos](https://docs.getpara.com/v2/react/guides/web3-operations/cosmos/gas-sponsorship.md): Learn how to implement gas sponsorship on Cosmos networks using fee grants with Para - [IBC Cross-Chain Transfers](https://docs.getpara.com/v2/react/guides/web3-operations/cosmos/ibc-transfers.md): Transfer tokens between Cosmos chains using Inter-Blockchain Communication - [Query Wallet Balances with Cosmos Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/cosmos/query-balances.md): Check account balances and token holdings using CosmJS with Para wallets - [Query Validator Information](https://docs.getpara.com/v2/react/guides/web3-operations/cosmos/query-validators.md): Get validator details, commission rates, and staking APY - [Send Tokens with Cosmos Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/cosmos/send-tokens.md): Transfer native tokens and execute IBC transfers using CosmJS with Para wallets - [Setup Cosmos Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/cosmos/setup-libraries.md): Install and configure CosmJS for use with Para SDK on Cosmos chains - [Sign Messages with Cosmos Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/cosmos/sign-messages.md): Sign direct and amino messages using CosmJS with Para wallets - [Stake Tokens to Validators](https://docs.getpara.com/v2/react/guides/web3-operations/cosmos/stake-tokens.md): Delegate tokens to Cosmos validators for staking rewards - [Verify Signatures with Cosmos Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/cosmos/verify-signatures.md): Verify message and transaction signatures using CosmJS - [Account Abstraction Integrations](https://docs.getpara.com/v2/react/guides/web3-operations/evm/account-abstraction.md): Set up smart accounts with Para's unified SDK interface across all supported AA providers - [Configure RPC Endpoints](https://docs.getpara.com/v2/react/guides/web3-operations/evm/configure-rpc.md): Set up custom RPC endpoints and chains with Web3 libraries - [Estimate Gas for Transactions](https://docs.getpara.com/v2/react/guides/web3-operations/evm/estimate-gas.md): Calculate gas costs for transactions including EIP-1559 gas pricing - [Execute Transactions](https://docs.getpara.com/v2/react/guides/web3-operations/evm/execute-transactions.md): Execute arbitrary transactions with lifecycle management using Web3 libraries - [Get Transaction Receipt](https://docs.getpara.com/v2/react/guides/web3-operations/evm/get-transaction-receipt.md): Check transaction status, confirmations, and retrieve receipt details - [Interact with Contracts](https://docs.getpara.com/v2/react/guides/web3-operations/evm/interact-with-contracts.md): Read and write smart contract data and handle events using Web3 libraries - [Manage Token Allowances](https://docs.getpara.com/v2/react/guides/web3-operations/evm/manage-allowances.md): Approve tokens, check allowances, and implement permit signatures - [Query Wallet Balances](https://docs.getpara.com/v2/react/guides/web3-operations/evm/query-balances.md): Check ETH and ERC-20 token balances using Web3 libraries with Para - [Send Tokens](https://docs.getpara.com/v2/react/guides/web3-operations/evm/send-tokens.md): Transfer ETH and ERC-20 tokens using Web3 libraries with Para - [Setup Web3 Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/evm/setup-libraries.md): Configure Ethers.js, Viem, or Wagmi to work with Para's secure wallet infrastructure - [Sign Messages](https://docs.getpara.com/v2/react/guides/web3-operations/evm/sign-messages.md): Sign plain text messages for authentication or verification with Web3 libraries - [Sign Typed Data (EIP-712)](https://docs.getpara.com/v2/react/guides/web3-operations/evm/sign-typed-data.md): Sign structured data using the EIP-712 standard for improved security and UX - [Verify Signatures with EVM Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/evm/verify-signatures.md): Verify message and transaction signatures using Ethers, Viem, or Wagmi - [Watch Contract Events](https://docs.getpara.com/v2/react/guides/web3-operations/evm/watch-events.md): Listen to smart contract events and parse event logs in real-time - [Get Wallet Data](https://docs.getpara.com/v2/react/guides/web3-operations/get-wallet-address.md): Access wallet addresses and information using Para React hooks - [Query Wallet Balance with Para](https://docs.getpara.com/v2/react/guides/web3-operations/query-wallet-balance.md): Get wallet balances directly using Para's built-in balance methods - [Sign Messages with Para](https://docs.getpara.com/v2/react/guides/web3-operations/sign-with-para.md): Learn how to sign a \"Hello, Para!\" message using the Para SDK - [Set Compute Units and Priority Fees](https://docs.getpara.com/v2/react/guides/web3-operations/solana/compute-units.md): Configure compute budget and priority fees for Solana transactions - [Configure RPC Endpoints with Solana Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/solana/configure-rpc.md): Set up and configure Solana RPC endpoints and connections using Web3.js or Anchor - [Execute Transactions with Solana Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/solana/execute-transactions.md): Interact with Solana programs and execute complex transactions using Web3.js or Anchor - [Get Solana Transaction Status](https://docs.getpara.com/v2/react/guides/web3-operations/solana/get-transaction-status.md): Check transaction confirmation status and finality on Solana - [Interact with Solana Programs](https://docs.getpara.com/v2/react/guides/web3-operations/solana/interact-with-programs.md): Call program instructions and work with Anchor IDLs using Para - [Manage SPL Token Accounts](https://docs.getpara.com/v2/react/guides/web3-operations/solana/manage-token-accounts.md): Create, close, and manage SPL token accounts on Solana - [Query Wallet Balances with Solana Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/solana/query-balances.md): Check SOL and SPL token balances using Solana Web3.js or Anchor with Para wallets - [Send Tokens with Solana Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/solana/send-tokens.md): Transfer SOL tokens using Solana Web3.js or Anchor with Para wallets - [Setup Solana Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/solana/setup-libraries.md): Install and configure Solana Web3.js or Anchor for use with Para SDK - [SWIG Account Abstraction](https://docs.getpara.com/v2/react/guides/web3-operations/solana/setup-swig.md): Build embedded wallets using SWIG AA provider with Para's infrastructure on Solana - [Sign Messages with Solana Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/solana/sign-messages.md): Sign text and binary messages using Solana Web3.js or Anchor with Para - [Verify Signatures with Solana Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/solana/verify-signatures.md): Verify message and transaction signatures using Solana Web3.js or Anchor - [Configure Horizon Endpoints with Stellar Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/stellar/configure-rpc.md): Set up and configure Stellar Horizon API endpoints for different networks - [Execute Transactions with Stellar Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/stellar/execute-transactions.md): Build and sign complex Stellar transactions including multi-op, fee bumps, and Soroban auth - [Query Wallet Balances with Stellar Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/stellar/query-balances.md): Check XLM and token balances using the Stellar SDK with Para wallets - [Send Tokens with Stellar Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/stellar/send-tokens.md): Transfer XLM using the Stellar SDK with Para wallets - [Setup Stellar Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/stellar/setup-libraries.md): Install and configure the Stellar SDK for use with Para SDK - [Sign Messages with Stellar Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/stellar/sign-messages.md): Sign arbitrary bytes for verification using the Stellar SDK with Para - [Verify Signatures with Stellar Libraries](https://docs.getpara.com/v2/react/guides/web3-operations/stellar/verify-signatures.md): Verify Ed25519 signatures from Stellar addresses - [Switch Active Wallet](https://docs.getpara.com/v2/react/guides/web3-operations/switch-wallet.md): Change the currently selected wallet for blockchain operations - [React SDK Overview](https://docs.getpara.com/v2/react/overview.md): Complete guide to integrating Para's React SDK for Web3 authentication and wallet management - [React SDK Quickstart](https://docs.getpara.com/v2/react/quickstart.md): Get started with Para's React SDK in minutes with our interactive setup guide - [Para with Next.js](https://docs.getpara.com/v2/react/setup/nextjs.md): A guide to integrate Para into a Next.js application - [Para with TanStack Start](https://docs.getpara.com/v2/react/setup/tanstack-start.md): A guide to integrate Para SDK with TanStack Start while preserving server-side rendering capabilities. - [Para with React + Vite](https://docs.getpara.com/v2/react/setup/vite.md): A guide to quickly integrate the Para Modal into your Vite-powered React application. - [Testing Your Integration](https://docs.getpara.com/v2/react/testing-guide.md): Use test credentials to develop and test your Para integration without creating real users - [CRA with CRACO](https://docs.getpara.com/v2/react/troubleshooting/cra.md): Navigating Para integration complexities in CRA projects using CRACO - [Next.js](https://docs.getpara.com/v2/react/troubleshooting/nextjs.md): Troubleshooting Para integration with Next.js applications - [React with Vite](https://docs.getpara.com/v2/react/troubleshooting/react-vite.md): Overcoming Para integration challenges in Vite-powered React applications - [Svelte](https://docs.getpara.com/v2/react/troubleshooting/svelte.md): Overcoming Para integration challenges in Svelte applications - [TanStack Start Troubleshooting](https://docs.getpara.com/v2/react/troubleshooting/tanstack-start.md): Overcoming Para integration challenges in TanStack Start applications - [Vue.js Troubleshooting](https://docs.getpara.com/v2/react/troubleshooting/vue.md): Resolving common Para SDK integration challenges with Vue.js applications - [addCredential](https://docs.getpara.com/v2/references/core/addcredential.md): Returns a URL that the user can visit to add a new auth credential to their account or change to basic login - [claimPregenWallets](https://docs.getpara.com/v2/references/core/claimpregenwallets.md): Claims pregenerated wallets for the user - [clearStorage](https://docs.getpara.com/v2/references/core/clearstorage.md): Clears the specified storage type - [createGuestWallets](https://docs.getpara.com/v2/references/core/createguestwallets.md): Creates guest wallets - [createPregenWallet](https://docs.getpara.com/v2/references/core/createpregenwallet.md): Creates a pregenerated wallet of a specific type - [createPregenWalletPerType](https://docs.getpara.com/v2/references/core/createpregenwalletpertype.md): Creates pregenerated wallets for specified types - [createWallet](https://docs.getpara.com/v2/references/core/createwallet.md): Creates a new wallet - [createWalletPerType](https://docs.getpara.com/v2/references/core/createwalletpertype.md): Creates wallets for specified types - [distributeNewWalletShare](https://docs.getpara.com/v2/references/core/distributenewwalletshare.md): Distributes a new wallet share - [enable2fa](https://docs.getpara.com/v2/references/core/enable2fa.md): Enables two-factor authentication using the provided code - [exportSession](https://docs.getpara.com/v2/references/core/exportsession.md): Exports the current session data - [fetchWallets](https://docs.getpara.com/v2/references/core/fetchwallets.md): Fetches wallet entities from the server - [getAuthInfo](https://docs.getpara.com/v2/references/core/getauthinfo.md): Retrieves the current authentication information for the user - [getFarcasterConnectUri](https://docs.getpara.com/v2/references/core/getfarcasterconnecturi.md): Generates a Farcaster connect URI for authentication - [getLinkedAccounts](https://docs.getpara.com/v2/references/core/getlinkedaccounts.md): Retrieves linked accounts for the user - [getOAuthUrl](https://docs.getpara.com/v2/references/core/getoauthurl.md): Generates an OAuth URL for third-party authentication - [getPregenWallets](https://docs.getpara.com/v2/references/core/getpregenwallets.md): Retrieves pregenerated wallets - [getUserShare](https://docs.getpara.com/v2/references/core/getusershare.md): Retrieves the user's share - [getVerificationToken](https://docs.getpara.com/v2/references/core/getverificationtoken.md): Retrieves a verification token - [getWalletBalance](https://docs.getpara.com/v2/references/core/getwalletbalance.md): Retrieves the balance for a wallet - [getWallets](https://docs.getpara.com/v2/references/core/getwallets.md): Retrieves all wallets for the user - [getWalletsByType](https://docs.getpara.com/v2/references/core/getwalletsbytype.md): Retrieves wallets of a specific type - [hasPregenWallet](https://docs.getpara.com/v2/references/core/haspregenwallet.md): Checks if a pregenerated wallet exists for the given ID - [importSession](https://docs.getpara.com/v2/references/core/importsession.md): Imports session data - [initiateOnRampTransaction](https://docs.getpara.com/v2/references/core/initiateonramptransaction.md): Initiates an on-ramp transaction - [isFullyLoggedIn](https://docs.getpara.com/v2/references/core/isfullyloggedin.md): Checks if the user is fully logged in - [isSessionActive](https://docs.getpara.com/v2/references/core/issessionactive.md): Checks if the current session is active - [issueJwt](https://docs.getpara.com/v2/references/core/issuejwt.md): Issues a JWT token - [keepSessionAlive](https://docs.getpara.com/v2/references/core/keepsessionalive.md): Keeps the current session alive - [loginExternalWallet](https://docs.getpara.com/v2/references/core/loginexternalwallet.md): Initiates login using an external wallet - [logout](https://docs.getpara.com/v2/references/core/logout.md): Logs out the current user - [refreshSession](https://docs.getpara.com/v2/references/core/refreshsession.md): Refreshes the current session - [refreshShare](https://docs.getpara.com/v2/references/core/refreshshare.md): Refreshes a wallet share - [resendVerificationCode](https://docs.getpara.com/v2/references/core/resendverificationcode.md): Resends a verification code for signup, login, or account linking - [setup2fa](https://docs.getpara.com/v2/references/core/setup2fa.md): Sets up two-factor authentication for the user - [setUserShare](https://docs.getpara.com/v2/references/core/setusershare.md): Sets the user's share - [signMessage](https://docs.getpara.com/v2/references/core/signmessage.md): Signs a message using the specified wallet - [signTransaction](https://docs.getpara.com/v2/references/core/signtransaction.md): Signs a transaction using the specified wallet - [signUpOrLogIn](https://docs.getpara.com/v2/references/core/signuporlogin.md): Initiates signup or login for a user based on the provided authentication details - [updatePregenWalletIdentifier](https://docs.getpara.com/v2/references/core/updatepregenwalletidentifier.md): Updates the identifier for a pregenerated wallet - [verify2fa](https://docs.getpara.com/v2/references/core/verify2fa.md): Verifies two-factor authentication - [verifyExternalWallet](https://docs.getpara.com/v2/references/core/verifyexternalwallet.md): Verifies an external wallet for authentication - [verifyFarcaster](https://docs.getpara.com/v2/references/core/verifyfarcaster.md): Verifies Farcaster authentication - [verifyNewAccount](https://docs.getpara.com/v2/references/core/verifynewaccount.md): Verifies a new account using the provided verification code - [verifyOAuth](https://docs.getpara.com/v2/references/core/verifyoauth.md): Verifies OAuth authentication - [verifyTelegram](https://docs.getpara.com/v2/references/core/verifytelegram.md): Verifies Telegram authentication - [waitForLogin](https://docs.getpara.com/v2/references/core/waitforlogin.md): Polls and waits for the login process to complete - [waitForSignup](https://docs.getpara.com/v2/references/core/waitforsignup.md): Polls and waits for the signup process to complete - [waitForWalletCreation](https://docs.getpara.com/v2/references/core/waitforwalletcreation.md): Polls and waits for wallet creation to complete - [ParaProvider](https://docs.getpara.com/v2/references/hooks/ParaProvider.md): React context provider component that wraps your application to provide access to Para hooks - [useAccount](https://docs.getpara.com/v2/references/hooks/useAccount.md): React Query hook for retrieving the current embedded account and connected external wallets - [useAccountLinkInProgress](https://docs.getpara.com/v2/references/hooks/useAccountLinkInProgress.md): Hook for returning the account linking status of the user - [useAddAuthMethod](https://docs.getpara.com/v2/references/hooks/useAddAuthMethod.md): React hook for adding a new auth method to the user's account - [useClaimPregenWallets](https://docs.getpara.com/v2/references/hooks/useClaimPregenWallets.md): React hook for claiming pregenerated wallets - [useClient](https://docs.getpara.com/v2/references/hooks/useClient.md): Hook for retrieving the Para client instance - [useCosmjsAminoSigner](https://docs.getpara.com/v2/references/hooks/useCosmjsAminoSigner.md): Hook to retrieve a CosmJS Amino signer for Para Cosmos wallets - [useCosmjsProtoSigner](https://docs.getpara.com/v2/references/hooks/useCosmjsProtoSigner.md): Hook to retrieve a CosmJS Proto signer for Para Cosmos wallets - [useCreateGuestWallets](https://docs.getpara.com/v2/references/hooks/useCreateGuestWallets.md): React hook for creating guest wallets - [useCreatePregenWallet](https://docs.getpara.com/v2/references/hooks/useCreatePregenWallet.md): React hook for creating pregenerated wallets - [useCreatePregenWalletPerType](https://docs.getpara.com/v2/references/hooks/useCreatePregenWalletPerType.md): React hook for creating pregenerated wallets per type - [useCreateWallet](https://docs.getpara.com/v2/references/hooks/useCreateWallet.md): React hook for creating wallets - [useCreateWalletPerType](https://docs.getpara.com/v2/references/hooks/useCreateWalletPerType.md): React hook for creating wallets per type - [useEnable2fa](https://docs.getpara.com/v2/references/hooks/useEnable2fa.md): React hook to enable two-factor authentication (2FA) - [useHasPregenWallet](https://docs.getpara.com/v2/references/hooks/useHasPregenWallet.md): React hook for checking if a pregenerated wallet exists - [useIsFullyLoggedIn](https://docs.getpara.com/v2/references/hooks/useIsFullyLoggedIn.md): Hook for returning whether the user is fully logged in with Para - [useIssueJwt](https://docs.getpara.com/v2/references/hooks/useIssueJwt.md): React hook for issuing a JWT token - [useKeepSessionAlive](https://docs.getpara.com/v2/references/hooks/useKeepSessionAlive.md): React hook for keeping the session alive - [useLinkAccount](https://docs.getpara.com/v2/references/hooks/useLinkAccount.md) - [useLinkedAccounts](https://docs.getpara.com/v2/references/hooks/useLinkedAccounts.md): Hook for returning the linked accounts of the user - [useLoginExternalWallet](https://docs.getpara.com/v2/references/hooks/useLoginExternalWallet.md) - [useLogout](https://docs.getpara.com/v2/references/hooks/useLogout.md): React hook for logging out - [useModal](https://docs.getpara.com/v2/references/hooks/useModal.md) - [useParaStatus](https://docs.getpara.com/v2/references/hooks/useParaStatus.md) - [useResendVerificationCode](https://docs.getpara.com/v2/references/hooks/useResendVerificationCode.md) - [useSetup2fa](https://docs.getpara.com/v2/references/hooks/useSetup2fa.md) - [useSignMessage](https://docs.getpara.com/v2/references/hooks/useSignMessage.md) - [useSignTransaction](https://docs.getpara.com/v2/references/hooks/useSignTransaction.md) - [useSignUpOrLogIn](https://docs.getpara.com/v2/references/hooks/useSignUpOrLogIn.md) - [useSolanaSigner](https://docs.getpara.com/v2/references/hooks/useSolanaSigner.md) - [useStellarSigner](https://docs.getpara.com/v2/references/hooks/useStellarSigner.md) - [useUpdatePregenWalletIdentifier](https://docs.getpara.com/v2/references/hooks/useUpdatePregenWalletIdentifier.md) - [useVerify2fa](https://docs.getpara.com/v2/references/hooks/useVerify2fa.md) - [useVerifyExternalWallet](https://docs.getpara.com/v2/references/hooks/useVerifyExternalWallet.md) - [useVerifyFarcaster](https://docs.getpara.com/v2/references/hooks/useVerifyFarcaster.md) - [useVerifyNewAccount](https://docs.getpara.com/v2/references/hooks/useVerifyNewAccount.md) - [useVerifyOAuth](https://docs.getpara.com/v2/references/hooks/useVerifyOAuth.md) - [useVerifyTelegram](https://docs.getpara.com/v2/references/hooks/useVerifyTelegram.md) - [useViemAccount](https://docs.getpara.com/v2/references/hooks/useViemAccount.md) - [useViemClient](https://docs.getpara.com/v2/references/hooks/useViemClient.md) - [useWaitForLogin](https://docs.getpara.com/v2/references/hooks/useWaitForLogin.md) - [useWaitForSignup](https://docs.getpara.com/v2/references/hooks/useWaitForSignup.md) - [useWaitForWalletCreation](https://docs.getpara.com/v2/references/hooks/useWaitForWalletCreation.md) - [useWallet](https://docs.getpara.com/v2/references/hooks/useWallet.md): Hook for retrieving the selected wallet - [useWalletBalance](https://docs.getpara.com/v2/references/hooks/useWalletBalance.md): Hook for retrieving a wallet balance - [useWalletState](https://docs.getpara.com/v2/references/hooks/useWalletState.md) - [API Reference](https://docs.getpara.com/v2/references/overview.md): Complete reference documentation for Para SDK methods, hooks, and types - [AccountLinkError](https://docs.getpara.com/v2/references/types/accountlinkerror.md): Error types for account linking - [AccountLinkInProgress](https://docs.getpara.com/v2/references/types/accountlinkinprogress.md): Represents an in-progress account link - [AuthMethod](https://docs.getpara.com/v2/references/types/authmethod.md): Authentication methods - [AuthState](https://docs.getpara.com/v2/references/types/authstate.md): Union of authentication states: verify, login, or signup - [AuthStateSignup](https://docs.getpara.com/v2/references/types/authstatesignup.md): The authentication state for signup - [AuthStateSignupOrLogin](https://docs.getpara.com/v2/references/types/authstatesignuporlogin.md): Union type for signup or login authentication states - [AuthStateVerify](https://docs.getpara.com/v2/references/types/authstateverify.md): The authentication state for verification - [AuthStateVerifyOrLogin](https://docs.getpara.com/v2/references/types/authstateverifyorlogin.md): Union type for verify or login authentication states - [AuthType](https://docs.getpara.com/v2/references/types/authtype.md): Union of authentication types - [BackupKitEmailProps](https://docs.getpara.com/v2/references/types/backupkitemailprops.md): Properties for backup kit emails - [BorderRadius](https://docs.getpara.com/v2/references/types/borderradius.md): Border radius options for themes - [Callbacks](https://docs.getpara.com/v2/references/types/callbacks.md): Event callbacks for Para SDK events - [ConstructorOpts](https://docs.getpara.com/v2/references/types/constructoropts.md): Options for SDK constructor - [CoreAuthInfo](https://docs.getpara.com/v2/references/types/coreauthinfo.md): Core authentication information - [Ctx](https://docs.getpara.com/v2/references/types/ctx.md): Context configuration for the SDK - [CurrentWalletIds](https://docs.getpara.com/v2/references/types/currentwalletids.md): Partial record of wallet IDs by type - [EmailTheme](https://docs.getpara.com/v2/references/types/emailtheme.md): Themes for emails - [EmbeddedWalletType](https://docs.getpara.com/v2/references/types/embeddedwallettype.md): Type for embedded wallets - [EnabledFlow](https://docs.getpara.com/v2/references/types/enabledflow.md): Enabled flows for on-ramp configurations - [Environment](https://docs.getpara.com/v2/references/types/environment.md): Available environments for the SDK - [ExternalWalletConfig](https://docs.getpara.com/v2/references/types/externalwalletconfig.md): Configuration for external wallets - [ExternalWalletInfo](https://docs.getpara.com/v2/references/types/externalwalletinfo.md): Information for an external wallet - [ExternalWalletType](https://docs.getpara.com/v2/references/types/externalwallettype.md): Type for external wallets - [FullSignatureRes](https://docs.getpara.com/v2/references/types/fullsignatureres.md): Full result of a signing operation - [GetWalletBalanceResponse](https://docs.getpara.com/v2/references/types/getwalletbalanceresponse.md): Response type for wallet balance - [IssueJwtResponse](https://docs.getpara.com/v2/references/types/issuejwtresponse.md): Response for issuing a JWT - [LinkedAccounts](https://docs.getpara.com/v2/references/types/linkedaccounts.md): Structure for primary and linked accounts - [Network](https://docs.getpara.com/v2/references/types/network.md): Supported networks - [OAuthResponse](https://docs.getpara.com/v2/references/types/oauthresponse.md): Response type for OAuth verification - [OnRampAsset](https://docs.getpara.com/v2/references/types/onrampasset.md): Supported on-ramp assets - [OnRampProvider](https://docs.getpara.com/v2/references/types/onrampprovider.md): On-ramp providers - [OnRampPurchase](https://docs.getpara.com/v2/references/types/onramppurchase.md): Details of an on-ramp purchase - [OnRampPurchaseCreateParams](https://docs.getpara.com/v2/references/types/onramppurchasecreateparams.md): Parameters for creating an on-ramp purchase - [OnRampPurchaseStatus](https://docs.getpara.com/v2/references/types/onramppurchasestatus.md): Statuses for on-ramp purchases - [OnRampPurchaseType](https://docs.getpara.com/v2/references/types/onramppurchasetype.md): Types of on-ramp purchases - [ParaEvent](https://docs.getpara.com/v2/references/types/paraevent.md): Events emitted by the Para SDK - [ParaModalProps](https://docs.getpara.com/v2/references/types/paramodalprops.md): Props for the Para modal - [ParaProviderConfig](https://docs.getpara.com/v2/references/types/paraproviderconfig.md): Configuration for the ParaProvider - [PartnerEntity](https://docs.getpara.com/v2/references/types/partnerentity.md): Details for a partner entity - [PollParams](https://docs.getpara.com/v2/references/types/pollparams.md): Parameters for polling operations - [PregenAuth](https://docs.getpara.com/v2/references/types/pregenauth.md): Authentication type for pregen identifiers - [Setup2faResponse](https://docs.getpara.com/v2/references/types/setup2faresponse.md): Response for setting up 2FA - [StorageType](https://docs.getpara.com/v2/references/types/storagetype.md): Types of storage - [SuccessfulSignatureRes](https://docs.getpara.com/v2/references/types/successfulsignatureres.md): Successful signature result - [SupportedAccountLinks](https://docs.getpara.com/v2/references/types/supportedaccountlinks.md): Supported account link types - [SupportedWalletTypes](https://docs.getpara.com/v2/references/types/supportedwallettypes.md): Array of supported wallet types with optional flag - [TelegramAuthResponse](https://docs.getpara.com/v2/references/types/telegramauthresponse.md): Response from Telegram authentication - [TExternalWallet](https://docs.getpara.com/v2/references/types/texternalwallet.md): External wallet provider types - [Theme](https://docs.getpara.com/v2/references/types/theme.md): Theme configuration for the portal - [TLinkedAccountType](https://docs.getpara.com/v2/references/types/tlinkedaccounttype.md): Types of linked accounts - [TOAuthMethod](https://docs.getpara.com/v2/references/types/toauthmethod.md): OAuth method types - [TPregenIdentifierType](https://docs.getpara.com/v2/references/types/tpregenidentifiertype.md): Types of pregen identifiers - [TWalletScheme](https://docs.getpara.com/v2/references/types/twalletscheme.md): Wallet scheme types - [TWalletType](https://docs.getpara.com/v2/references/types/twallettype.md): Wallet type union - [VerifiedAuth](https://docs.getpara.com/v2/references/types/verifiedauth.md): Verified authentication details - [Verify2faResponse](https://docs.getpara.com/v2/references/types/verify2faresponse.md): Response for verifying 2FA - [Wallet](https://docs.getpara.com/v2/references/types/wallet.md): Represents a wallet entity - [WalletEntity](https://docs.getpara.com/v2/references/types/walletentity.md): Server-side wallet entity - [WalletFilters](https://docs.getpara.com/v2/references/types/walletfilters.md): Filters for selecting wallets - [Migrate SDK pregen wallets to REST API](https://docs.getpara.com/v2/rest/migrate-from-sdk-pregen.md): Move existing SDK-pregenerated wallets to the REST API so you can sign with just a wallet ID and API key - [Multiple Wallets per User](https://docs.getpara.com/v2/rest/multi-wallet.md): Create multiple wallets for a single user using custom identifiers - [REST API](https://docs.getpara.com/v2/rest/overview.md): Server-to-server wallet and signing over HTTP - [Setup](https://docs.getpara.com/v2/rest/setup.md): Authenticate and make your first REST request - [Server Examples](https://docs.getpara.com/v2/server/examples.md): Explore Para's server-side integration examples across Node.js, Bun, and Deno - [Account Abstraction](https://docs.getpara.com/v2/server/guides/account-abstraction.md): Implement ERC-4337 and EIP-7702 Account Abstraction with Para Server SDK - [Cosmos Integration](https://docs.getpara.com/v2/server/guides/cosmos.md): Use Para Server SDK with Cosmos-based blockchains - [EVM Integration](https://docs.getpara.com/v2/server/guides/evm.md): Use Para Server SDK with Ethereum and EVM-compatible chains - [Wallet Pregeneration](https://docs.getpara.com/v2/server/guides/pregen.md): Create and manage server-side pregenerated wallets using Para's Server SDK - [Session Management](https://docs.getpara.com/v2/server/guides/sessions.md): Manage client sessions in server-side environments with Para Server SDK - [Solana Integration](https://docs.getpara.com/v2/server/guides/solana.md): Use Para Server SDK with Solana blockchain - [Stellar Integration](https://docs.getpara.com/v2/server/guides/stellar.md): Use Para Server SDK with Stellar blockchain - [Para Server SDK](https://docs.getpara.com/v2/server/overview.md): An introduction to server-side integrations with Para - [Server Setup](https://docs.getpara.com/v2/server/setup.md): Install and configure the Para Server SDK across Node.js, Bun, and Deno environments - [Server Troubleshooting](https://docs.getpara.com/v2/server/troubleshooting.md): Common issues and solutions for Para Server SDK - [Para + Svelte](https://docs.getpara.com/v2/svelte/setup/overview.md): Discover options for using Para with Svelte. - [Para with SvelteKit](https://docs.getpara.com/v2/svelte/setup/svelte-kit.md): A user-friendly guide to integrate the React-based Para Modal into your SvelteKit application. - [Para with Svelte + Vite](https://docs.getpara.com/v2/svelte/setup/vite.md) - [Swift SDK API Reference](https://docs.getpara.com/v2/swift/api/sdk.md): Comprehensive API reference for the Para Swift SDK (v2.0.0 Alpha) - [Mobile Examples](https://docs.getpara.com/v2/swift/examples.md): Explore Para's mobile integration examples for Swift - [Cosmos Integration](https://docs.getpara.com/v2/swift/guides/cosmos.md): Sign transactions for Cosmos chains using Para's unified wallet architecture - [Email & Phone Login](https://docs.getpara.com/v2/swift/guides/email-phone-login.md): Implement Para's unified email and phone authentication flow in Swift. - [EVM Integration](https://docs.getpara.com/v2/swift/guides/evm.md): Transfer ETH and interact with EVM chains using Para's unified wallet architecture - [External Wallets](https://docs.getpara.com/v2/swift/guides/external-wallets.md): Instructions for using external wallets with the ParaSwift SDK. - [Wallet Pregeneration & Claiming](https://docs.getpara.com/v2/swift/guides/pregen.md): Pregenerate and claim wallets in your Swift applications (Coming Soon) - [Swift Session Management](https://docs.getpara.com/v2/swift/guides/sessions.md): Guide to managing authentication sessions in Para for Swift applications - [Social Login](https://docs.getpara.com/v2/swift/guides/social-login.md): Instructions for implementing social login with the ParaSwift SDK. - [Solana Integration](https://docs.getpara.com/v2/swift/guides/solana.md): Sign Solana transactions using Para's unified wallet architecture - [Swift SDK Overview](https://docs.getpara.com/v2/swift/overview.md): Para Swift SDK documentation for iOS wallet integration - [Setup](https://docs.getpara.com/v2/swift/setup.md): Step-by-step guide for integrating the Para Swift SDK into your iOS application - [Troubleshooting](https://docs.getpara.com/v2/swift/troubleshooting.md): Solutions for common issues with the Para Swift SDK integration - [Para with Nuxt 3](https://docs.getpara.com/v2/vue/setup/nuxt.md): A guide to integrate the Para Modal (React-based) into your Nuxt 3 application. - [Para + Vue](https://docs.getpara.com/v2/vue/setup/overview.md): Discover options for using Para with Vue. - [Para with Vue + Vite](https://docs.getpara.com/v2/vue/setup/vite.md): A guide to integrate the Para Modal (React-based) into your Vue application powered by Vite. - [Integrate Para Wallets with Eliza OS](https://docs.getpara.com/v2/walkthroughs/Eliza.md): Build wallet-enabled AI agents using Para's infrastructure and Eliza OS framework - [Integrating Para with Rhinestone](https://docs.getpara.com/v2/walkthroughs/Rhinestone.md): Build cross-chain smart accounts using Para SDK with Rhinestone for intent-based transactions and gas abstraction - [Integrating Para with Squid](https://docs.getpara.com/v2/walkthroughs/Squid.md): Build a cross-chain USDC bridge using Squid Router API with Para SDK for seamless wallet management - [Integrating Para with thirdweb](https://docs.getpara.com/v2/walkthroughs/Thirdweb.md): Learn how to integrate Para's embedded wallets with thirdweb for smart accounts, gas sponsorship, and in-app payments - [Integrate x402 with Para](https://docs.getpara.com/v2/walkthroughs/X402.md): Enable micropayments over HTTP using Para's ViemAccount with Coinbase's x402 protocol - [Integrate Aave v3 with Para](https://docs.getpara.com/v2/walkthroughs/aave.md): Combine Para's wallet infrastructure with Aave's lending protocol to enable seamless borrowing, lending, and yield strategies - [Integrate Arc Chain with Para](https://docs.getpara.com/v2/walkthroughs/arc.md): This walkthrough explores how to use Para with Arc Chain using Para SDK. - [Integrate Brale with Para](https://docs.getpara.com/v2/walkthroughs/brale.md): Combine Para's wallet infrastructure with Brale's stablecoin issuance API to enable minting, redeeming, and managing stablecoins. - [Bulk Wallet Pregeneration for Twitter](https://docs.getpara.com/v2/walkthroughs/bulk-pregeneration.md): Learn how to bulk pregenerate Para wallets for Twitter users and enable seamless wallet claiming - [Chrome Extension Integration with Para](https://docs.getpara.com/v2/walkthroughs/chrome-extension-integration.md): Learn how to build Chrome extensions with Para, including state persistence, background workers, and seamless user authentication - [EIP-712 Typed Data Signing with Para](https://docs.getpara.com/v2/walkthroughs/eip712-typed-data-signing.md): Learn how to sign structured, typed data using EIP-712 standard with Para's Ethers integration - [Ethereum Transfers with Para](https://docs.getpara.com/v2/walkthroughs/ethereum-transfers.md): Learn how to send ETH transactions using Para with both Ethers and Viem libraries - [Inco Integration](https://docs.getpara.com/v2/walkthroughs/inco.md): Learn how to create a private payment flow using Para SDK with Inco's confidential wrapper for encrypted token transfers. - [Para + M0 Integration](https://docs.getpara.com/v2/walkthroughs/m0.md): Combine Para's embedded wallets with M0's programmable stablecoin infrastructure - [Miden Integration](https://docs.getpara.com/v2/walkthroughs/miden.md): Learn how to integrate Para's embedded wallets with the Miden zero-knowledge virtual machine using the official miden-para SDK - [Automated Migration to Para with MCP](https://docs.getpara.com/v2/walkthroughs/migration-mcp.md): Use AI-powered tooling to automatically migrate your app from Privy, Reown, Web3Modal, or WalletConnect to Para - [Para Walkthroughs & Modules](https://docs.getpara.com/v2/walkthroughs/overview.md): Step-by-step guides for integrating Para's wallet infrastructure with popular platforms and protocols - [Integrating Para with Porto](https://docs.getpara.com/v2/walkthroughs/porto.md): Upgrade Para EOA wallets to Porto Smart Accounts using EIP-7702 for session keys, transaction batching, and gas sponsorship - [Rootstock Integration](https://docs.getpara.com/v2/walkthroughs/rootstock.md): This walkthrough explores how to use Para in Rootstock Chain using Para SDK. - [Solana SOL Transfers with Para](https://docs.getpara.com/v2/walkthroughs/solana-transfers.md): Learn how to send SOL transactions using Para with Solana Web3.js, Solana Signers v2, and Coral Anchor libraries ## Para CLI (`@getpara/cli`) The Para CLI is a developer tool for managing API keys, organizations, projects, and configuration from the terminal. ### Installation ```bash npm install -g @getpara/cli ``` ### Authentication ```bash para login # OAuth browser flow with PKCE para logout # Clear stored credentials para auth status # Check session validity (server-side) para whoami # Show user, org, project, environment ``` Sessions are stored at `~/.config/para/credentials.json` (0600 permissions). PROD and BETA share the same developer portal session. ### Configuration ```bash para config get [key] # Read config values para config set # Set config value para config unset # Remove config value para init # Create .pararc in current directory ``` Resolution order: CLI flags → environment variables (`PARA_ENVIRONMENT`, `PARA_ORG_ID`, `PARA_PROJECT_ID`) → `.pararc` → global config → defaults. ### Organizations & Projects ```bash para orgs list # List organizations para orgs switch [org-id] # Switch active org para projects list # List projects para projects switch [project-id] # Switch active project para projects create # Create project (-n, --framework) para projects update [project-id] # Update project para projects archive [project-id]# Archive project (keys stop immediately) para projects restore # Restore archived project ``` ### API Keys ```bash para keys list # List API keys para keys get # Get key details (--show-secret, --copy) para keys create # Create key (-n, --display-name) para keys rotate # Rotate key (--secret for secret key) para keys archive # Revoke key para keys config [key-id] # Configure key settings ``` `para keys config` sub-commands: `security`, `branding`, `setup`, `ramps`, `webhooks`. Each accepts flags for non-interactive use. ### Scaffold a Project ```bash para create [app-name] # Scaffold Next.js or Expo app with Para SDK ``` Templates: `nextjs`, `expo`. Supports `--networks`, `--email`, `--phone`, `--oauth`, `--wallets`, `--bundle-id`, `--package-manager`, `-y` for non-interactive mode. ### Diagnostics ```bash para doctor [path] # Scan for SDK integration issues ``` Checks: API key env var, env var prefix, CSS import, ParaProvider, QueryClient, "use client" directive, version consistency, chain dependencies, deprecated packages. Use `--json` for CI/CD (exits 1 on errors). ### Global Flags | Flag | Description | |------|-------------| | `-e, --environment` | Target environment: `DEV`, `SANDBOX`, `BETA`, `PROD` | | `--org ` | Override active organization | | `--project ` | Override active project | | `--json` | Output as JSON | | `--quiet` | Suppress non-essential output | | `--no-input` | Disable interactive prompts | ### CLI Documentation See the CLI entries in the Docs section above for full documentation links.