diff --git a/components/ui/badge.tsx b/components/ui/badge.tsx
new file mode 100644
index 0000000..f000e3e
--- /dev/null
+++ b/components/ui/badge.tsx
@@ -0,0 +1,36 @@
+import * as React from "react"
+import { cva, type VariantProps } from "class-variance-authority"
+
+import { cn } from "@/lib/utils"
+
+const badgeVariants = cva(
+ "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
+ {
+ variants: {
+ variant: {
+ default:
+ "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
+ secondary:
+ "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
+ destructive:
+ "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
+ outline: "text-foreground",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ },
+ }
+)
+
+export interface BadgeProps
+ extends React.HTMLAttributes,
+ VariantProps {}
+
+function Badge({ className, variant, ...props }: BadgeProps) {
+ return (
+
+ )
+}
+
+export { Badge, badgeVariants }
diff --git a/components/wallet/modals/private-deposit-modal.tsx b/components/wallet/modals/private-deposit-modal.tsx
index b9b1e36..f2f85f7 100644
--- a/components/wallet/modals/private-deposit-modal.tsx
+++ b/components/wallet/modals/private-deposit-modal.tsx
@@ -9,12 +9,18 @@ import {
DialogTitle,
} from "@/components/ui/dialog";
import { Label } from "@/components/ui/label";
-import { Transaction } from "@solana/web3.js";
import {
- fetchRecentBlockhash,
- sendSignedTransaction,
-} from "@/lib/blockchain/solana-client";
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "@/components/ui/select";
+import { PublicKey, Transaction } from "@solana/web3.js";
+import { sendSignedTransaction } from "@/lib/blockchain/solana-client";
import { X, Check } from "lucide-react";
+import { deposit } from "privacycash/utils";
+export * from "privacycash/utils";
interface PrivateDepositModalProps {
open: boolean;
@@ -27,9 +33,17 @@ export function PrivateDepositModal({
onOpenChange,
onSuccess,
}: PrivateDepositModalProps) {
- const { activeAccount, shadowWireClient, isPrivateMode, signTransaction } =
- useWallet();
+ const {
+ activeAccount,
+ shadowWireClient,
+ isPrivateMode,
+ signTransaction,
+ signVersionedTransaction,
+ encryptionService,
+ connection,
+ } = useWallet();
const [amount, setAmount] = useState("");
+ const [selectedProtocol, setSelectedProtocol] = useState("ShadowWire");
const [error, setError] = useState(null);
const [status, setStatus] = useState<
"idle" | "loading" | "success" | "error"
@@ -37,25 +51,43 @@ export function PrivateDepositModal({
const [txHash, setTxHash] = useState(null);
const handleDeposit = async () => {
- if (!activeAccount || !shadowWireClient || !isPrivateMode) return;
+ if (!activeAccount) return;
try {
setStatus("loading");
setError(null);
- const depositTx = await shadowWireClient.deposit({
- wallet: activeAccount.address,
- amount: parseFloat(amount) * 1e9, // Convert to lamports
- });
+ if (selectedProtocol === "ShadowWire") {
+ if (!shadowWireClient || !isPrivateMode) return;
- const unsignedTx = Transaction.from(
- Buffer.from(depositTx.unsigned_tx_base64, "base64"),
- );
+ const depositTx = await shadowWireClient.deposit({
+ wallet: activeAccount.address,
+ amount: parseFloat(amount) * 1e9, // Convert to lamports
+ });
- // Sign with the active account's keypair
- const signedTx = await signTransaction(unsignedTx);
- const txSignature = await sendSignedTransaction(signedTx);
- setTxHash(txSignature);
+ const unsignedTx = Transaction.from(
+ Buffer.from(depositTx.unsigned_tx_base64, "base64"),
+ );
+
+ // Sign with the active account's keypair
+ const signedTx = await signTransaction(unsignedTx);
+ const txSignature = await sendSignedTransaction(signedTx);
+ setTxHash(txSignature);
+ } else if (selectedProtocol === "PrivacyCash" && encryptionService) {
+ const { WasmFactory } = await import("@lightprotocol/hasher.rs");
+ const lightWasm = await WasmFactory.getInstance();
+
+ await deposit({
+ lightWasm: lightWasm,
+ connection,
+ amount_in_lamports: parseFloat(amount) * 1e9,
+ keyBasePath: "/circuit2",
+ publicKey: new PublicKey(activeAccount.publicKey),
+ transactionSigner: signVersionedTransaction,
+ storage: localStorage,
+ encryptionService,
+ });
+ }
setStatus("success");
setAmount("");
@@ -124,6 +156,20 @@ export function PrivateDepositModal({
+
+
+
-
{token.symbol}
+
+ {token.symbol}
+ {protocol && (
+
+ {protocol === "shadowwire" ? "SW" : "PC"}
+
+ )}
+
{displayBalance}
diff --git a/contexts/wallet-context.tsx b/contexts/wallet-context.tsx
index 77339a6..d06e966 100644
--- a/contexts/wallet-context.tsx
+++ b/contexts/wallet-context.tsx
@@ -27,10 +27,16 @@ import {
fetchRecentBlockhash,
} from "@/lib/blockchain/solana-client";
import * as bip39 from "bip39";
-import { Keypair, Transaction as SolanaTransaction } from "@solana/web3.js";
+import {
+ Keypair,
+ Transaction as SolanaTransaction,
+ VersionedTransaction,
+} from "@solana/web3.js";
import bs58 from "bs58";
import nacl from "tweetnacl";
import { ShadowWireClient } from "@radr/shadowwire";
+import { EncryptionService, getBalanceFromUtxos } from "privacycash/utils";
+export * from "privacycash/utils";
interface WalletContextType {
// State
@@ -55,12 +61,21 @@ interface WalletContextType {
refreshTransactions: () => Promise
;
completeOnboarding: (account: Account) => void;
signTransaction: (tx: SolanaTransaction) => Promise;
+ signVersionedTransaction: (
+ tx: VersionedTransaction,
+ ) => Promise;
+ signMessage: (message: Uint8Array) => Promise;
- //Shadowwire
+ // Privacy clients
shadowWireClient: ShadowWireClient | null;
setShadowWireClient: (client: ShadowWireClient) => void;
isShadowWireInitialized: boolean;
setIsShadowWireInitialized: (isShadowWireInitialized: boolean) => void;
+ isPrivacyCashInitialized: boolean;
+ setIsPrivacyCashInitialized: (isPrivacyCashInitialized: boolean) => void;
+ encryptionService: EncryptionService | null;
+ setEncryptionService: (encryptionService: EncryptionService) => void;
+ connection;
}
const STORE_NAME = "ruma-keypairs";
@@ -168,6 +183,10 @@ export function WalletProvider({ children }: { children: ReactNode }) {
const [shadowWireClient, setShadowWireClient] =
useState(null);
const [isShadowWireInitialized, setIsShadowWireInitialized] = useState(false);
+ const [isPrivacyCashInitialized, setIsPrivacyCashInitialized] =
+ useState(false);
+ const [encryptionService, setEncryptionService] =
+ useState(null);
const activeAccount =
state.accounts.find((a) => a.id === state.activeAccountId) || null;
@@ -183,22 +202,38 @@ export function WalletProvider({ children }: { children: ReactNode }) {
initBrowserDB();
}, []);
- const fetchShadowWireBalances = async (address: string) => {
- if (!shadowWireClient) {
- console.error("Shadowwire client not initialized");
- return { sol: 0, usdc: 0 };
+ const fetchPrivacyBalances = async (address: string) => {
+ const results = {
+ shadowwire: { sol: 0, usdc: 0 },
+ privacycash: { sol: 0, usdc: 0 },
+ };
+
+ // Fetch ShadowWire balances
+ if (shadowWireClient) {
+ try {
+ const balance = await shadowWireClient.getBalance(address, "SOL");
+ results.shadowwire.sol = balance.available / 1e9;
+ // TODO: Fetch USDC balance
+ } catch (error) {
+ console.error("Failed to fetch ShadowWire balances:", error);
+ }
}
- try {
- const balance = await shadowWireClient.getBalance(address, "SOL");
- const [sol, usdc] = [balance.available / 1e9, 0]; // TODO: Fetch USDC or USD1 balance and use Promise.all
- return { sol, usdc };
- } catch (error) {
- console.error("Failed to fetch ShadowWire balances:", error);
- return { sol: 0, usdc: 0 };
+
+ // Fetch PrivacyCash balances
+ if (isPrivacyCashInitialized) {
+ try {
+ const balance = { lamports: 1000000000 }; // TODO: Find balance function for privacycash, maybe await getBalanceFromUtxos();
+ results.privacycash.sol = balance.lamports / 1e9;
+ // TODO: Fetch USDC balance
+ } catch (error) {
+ console.error("Failed to fetch PrivacyCash balances:", error);
+ }
}
+
+ return results;
};
- // Fetch real balances from mainnet and shadowwire (private mode)
+ // Fetch real balances from mainnet and privacy protocols
const refreshBalances = useCallback(async () => {
if (!activeAccount) {
setBalances([
@@ -210,24 +245,7 @@ export function WalletProvider({ children }: { children: ReactNode }) {
setIsLoading(true);
try {
- let sol: number = 0;
- let usdc: number = 0;
-
- // First fetch ShadowWire balances if in private mode
- if (state.isPrivateMode) {
- const shadowWireBalances = await fetchShadowWireBalances(
- activeAccount.address,
- );
- sol = shadowWireBalances.sol;
- usdc = shadowWireBalances.usdc;
- }
-
- // Only fetch mainnet balances if not in private mode
- if (!state.isPrivateMode) {
- const mainnetBalances = await getAllBalances(activeAccount.address);
- sol = mainnetBalances.sol || sol; // Fallback to ShadowWire if mainnet fails
- usdc = mainnetBalances.usdc || usdc; // Fallback to ShadowWire if mainnet fails
- }
+ const newBalances: TokenBalance[] = [];
// Fetch prices from CoinGecko
let solPrice = 0;
@@ -235,6 +253,7 @@ export function WalletProvider({ children }: { children: ReactNode }) {
try {
const priceResponse = await fetch(
"https://api.coingecko.com/api/v3/simple/price?ids=solana,usd-coin&vs_currencies=usd",
+ { cache: "force-cache" },
);
const prices = await priceResponse.json();
solPrice = prices.solana?.usd || 0;
@@ -243,10 +262,83 @@ export function WalletProvider({ children }: { children: ReactNode }) {
// Price fetch failed, use defaults
}
- setBalances([
- { token: SOL_TOKEN, balance: sol, usdValue: sol * solPrice },
- { token: USDC_TOKEN, balance: usdc, usdValue: usdc * usdcPrice },
- ]);
+ if (state.isPrivateMode) {
+ // Fetch privacy protocol balances
+ const privacyBalances = await fetchPrivacyBalances(
+ activeAccount.address,
+ );
+
+ // Add ShadowWire balances
+ if (privacyBalances.shadowwire.sol > 0) {
+ newBalances.push({
+ token: SOL_TOKEN,
+ balance: privacyBalances.shadowwire.sol,
+ usdValue: privacyBalances.shadowwire.sol * solPrice,
+ protocol: "shadowwire",
+ });
+ }
+ if (privacyBalances.shadowwire.usdc > 0) {
+ newBalances.push({
+ token: USDC_TOKEN,
+ balance: privacyBalances.shadowwire.usdc,
+ usdValue: privacyBalances.shadowwire.usdc * usdcPrice,
+ protocol: "shadowwire",
+ });
+ }
+
+ // Add PrivacyCash balances
+ if (privacyBalances.privacycash.sol > 0) {
+ newBalances.push({
+ token: SOL_TOKEN,
+ balance: privacyBalances.privacycash.sol,
+ usdValue: privacyBalances.privacycash.sol * solPrice,
+ protocol: "privacycash",
+ });
+ }
+ if (privacyBalances.privacycash.usdc > 0) {
+ newBalances.push({
+ token: USDC_TOKEN,
+ balance: privacyBalances.privacycash.usdc,
+ usdValue: privacyBalances.privacycash.usdc * usdcPrice,
+ protocol: "privacycash",
+ });
+ }
+
+ // If no private balances, show zero balances
+ if (newBalances.length === 0) {
+ newBalances.push(
+ {
+ token: SOL_TOKEN,
+ balance: 0,
+ usdValue: 0,
+ protocol: "shadowwire",
+ },
+ {
+ token: USDC_TOKEN,
+ balance: 0,
+ usdValue: 0,
+ protocol: "shadowwire",
+ },
+ );
+ }
+ } else {
+ // Fetch mainnet balances
+ const mainnetBalances = await getAllBalances(activeAccount.address);
+ newBalances.push(
+ {
+ token: SOL_TOKEN,
+ balance: mainnetBalances.sol || 0,
+ usdValue: (mainnetBalances.sol || 0) * solPrice,
+ },
+ {
+ token: USDC_TOKEN,
+ balance: mainnetBalances.usdc || 0,
+ usdValue: (mainnetBalances.usdc || 0) * usdcPrice,
+ },
+ );
+ }
+
+ setBalances(newBalances);
} catch (error) {
console.error("Failed to fetch balances:", error);
setBalances([
@@ -256,7 +348,12 @@ export function WalletProvider({ children }: { children: ReactNode }) {
} finally {
setIsLoading(false);
}
- }, [activeAccount, state.isPrivateMode, isShadowWireInitialized]);
+ }, [
+ activeAccount,
+ state.isPrivateMode,
+ isShadowWireInitialized,
+ isPrivacyCashInitialized,
+ ]);
// Fetch real transactions from devnet
const refreshTransactions = useCallback(async () => {
@@ -394,6 +491,47 @@ export function WalletProvider({ children }: { children: ReactNode }) {
[activeAccount],
);
+ const signVersionedTransaction = useCallback(
+ async (tx: VersionedTransaction): Promise => {
+ if (!activeAccount) {
+ throw new Error("No active account");
+ }
+ const keypair = await getKeypairFromStorage(activeAccount.id);
+ if (!keypair) {
+ throw new Error("Signing key not found");
+ }
+ const correctTypeKeypair = Keypair.fromSecretKey(keypair.secretKey);
+
+ tx.sign([correctTypeKeypair]);
+ return tx;
+ },
+ [activeAccount],
+ );
+
+ const signMessage = useCallback(
+ async (message: Uint8Array): Promise => {
+ if (!activeAccount) {
+ throw new Error("No active account");
+ }
+ const keypair = await getKeypairFromStorage(activeAccount.id);
+ if (!keypair) {
+ throw new Error("Signing key not found");
+ }
+
+ // Use the correct keypair type
+ const correctTypeKeypair = Keypair.fromSecretKey(keypair.secretKey);
+
+ // Sign the message using the keypair
+ const signature = nacl.sign.detached(
+ message,
+ correctTypeKeypair.secretKey,
+ );
+
+ return new Uint8Array(signature);
+ },
+ [activeAccount],
+ );
+
return (
{children}
diff --git a/lib/blockchain/solana-client.ts b/lib/blockchain/solana-client.ts
index 758b7ce..cf0463e 100644
--- a/lib/blockchain/solana-client.ts
+++ b/lib/blockchain/solana-client.ts
@@ -6,7 +6,7 @@ import type { Transaction } from "./types";
import { Transaction as SolanaTransaction } from "@solana/web3.js";
import bs58 from "bs58";
-const FALLBACK_RPC_URLS = [
+export const FALLBACK_RPC_URLS = [
"https://api.mainnet.solana.com", // Solana public mainnet rpc
].filter(Boolean); // Remove empty strings
diff --git a/lib/blockchain/types.ts b/lib/blockchain/types.ts
index 2997061..71ec253 100644
--- a/lib/blockchain/types.ts
+++ b/lib/blockchain/types.ts
@@ -11,10 +11,13 @@ export interface Token {
logoUrl: string
}
+export type PrivacyProtocol = "shadowwire" | "privacycash"
+
export interface TokenBalance {
token: Token
balance: number
usdValue: number
+ protocol?: PrivacyProtocol // Optional for public balances
}
export interface Account {
diff --git a/lib/privacycash/init-privacycash.ts b/lib/privacycash/init-privacycash.ts
new file mode 100644
index 0000000..adc6d9b
--- /dev/null
+++ b/lib/privacycash/init-privacycash.ts
@@ -0,0 +1,43 @@
+import { PublicKey } from "@solana/web3.js";
+
+export async function getSignedSignature(
+ signed: Signed,
+ signMessage: (message: Uint8Array) => Promise,
+): Promise {
+ const encodedMessage = new TextEncoder().encode(
+ `Privacy Money account sign in`,
+ );
+
+ // ask for sign
+ let signature: Uint8Array;
+ try {
+ signature = await signMessage(encodedMessage);
+ } catch (err: any) {
+ if (
+ err instanceof Error &&
+ err.message?.toLowerCase().includes("user rejected")
+ ) {
+ throw new Error("User rejected the signature request");
+ }
+ throw new Error("Failed to sign message: " + err.message);
+ }
+
+ // If wallet.signMessage returned an object, extract `signature`
+ // @ts-ignore
+ if (signature.signature) {
+ // @ts-ignore
+ signature = signature.signature;
+ }
+
+ if (!(signature instanceof Uint8Array)) {
+ throw new Error("signature is not an Uint8Array type");
+ }
+ signed.signature = signature;
+ return signed;
+}
+
+export type Signed = {
+ publicKey: PublicKey;
+ signature?: Uint8Array;
+ provider: any;
+};
diff --git a/package.json b/package.json
index d499c1f..46a8860 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
},
"dependencies": {
"@hookform/resolvers": "^3.10.0",
+ "@lightprotocol/hasher.rs": "^0.2.1",
"@radix-ui/react-accordion": "1.2.2",
"@radix-ui/react-alert-dialog": "1.1.4",
"@radix-ui/react-aspect-ratio": "1.1.1",
@@ -52,6 +53,7 @@
"input-otp": "1.4.1",
"lucide-react": "^0.454.0",
"next-themes": "^0.4.6",
+ "privacycash": "^1.1.11",
"react": "19.2.0",
"react-day-picker": "9.8.0",
"react-dom": "19.2.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a37c6b7..6eb28e3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -11,6 +11,9 @@ importers:
'@hookform/resolvers':
specifier: ^3.10.0
version: 3.10.0(react-hook-form@7.60.0(react@19.2.0))
+ '@lightprotocol/hasher.rs':
+ specifier: ^0.2.1
+ version: 0.2.1
'@radix-ui/react-accordion':
specifier: 1.2.2
version: 1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
@@ -140,6 +143,9 @@ importers:
next-themes:
specifier: ^0.4.6
version: 0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ privacycash:
+ specifier: ^1.1.11
+ version: 1.1.11(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)(utf-8-validate@5.0.10)
react:
specifier: 19.2.0
version: 19.2.0
@@ -213,6 +219,9 @@ importers:
packages:
+ '@adraffy/ens-normalize@1.10.1':
+ resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==}
+
'@alloc/quick-lru@5.2.0':
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
@@ -233,6 +242,20 @@ packages:
resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==}
engines: {node: '>=6.9.0'}
+ '@coral-xyz/anchor-errors@0.31.1':
+ resolution: {integrity: sha512-NhNEku4F3zzUSBtrYz84FzYWm48+9OvmT1Hhnwr6GnPQry2dsEqH/ti/7ASjjpoFTWRnPXrjAIT1qM6Isop+LQ==}
+ engines: {node: '>=10'}
+
+ '@coral-xyz/anchor@0.31.1':
+ resolution: {integrity: sha512-QUqpoEK+gi2S6nlYc2atgT2r41TT3caWr/cPUEL8n8Md9437trZ68STknq897b82p5mW0XrTBNOzRbmIRJtfsA==}
+ engines: {node: '>=17'}
+
+ '@coral-xyz/borsh@0.31.1':
+ resolution: {integrity: sha512-9N8AU9F0ubriKfNE3g1WF0/4dtlGXoBN/hd1PvbNBamBNwRgHxH4P+o3Zt7rSEloW1HUs6LfZEchlx9fW7POYw==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@solana/web3.js': ^1.69.0
+
'@date-fns/tz@1.2.0':
resolution: {integrity: sha512-LBrd7MiJZ9McsOgxqWX7AaxrDjcFVjWH/tIKJd7pnR7McaslGYOP1QmmiBXdJH/H/yLCT+rcQ7FaPBUxRGUtrg==}
@@ -249,6 +272,18 @@ packages:
'@emnapi/wasi-threads@1.1.0':
resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
+ '@ethersproject/bytes@5.8.0':
+ resolution: {integrity: sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==}
+
+ '@ethersproject/keccak256@5.8.0':
+ resolution: {integrity: sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==}
+
+ '@ethersproject/logger@5.8.0':
+ resolution: {integrity: sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==}
+
+ '@ethersproject/sha2@5.8.0':
+ resolution: {integrity: sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==}
+
'@floating-ui/core@1.7.3':
resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
@@ -269,6 +304,12 @@ packages:
peerDependencies:
react-hook-form: ^7.0.0
+ '@iden3/bigarray@0.0.2':
+ resolution: {integrity: sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g==}
+
+ '@iden3/binfileutils@0.0.12':
+ resolution: {integrity: sha512-naAmzuDufRIcoNfQ1d99d7hGHufLA3wZSibtr4dMe6ZeiOPV1KwOZWTJ1YVz4HbaWlpDuzVU72dS4ATQS4PXBQ==}
+
'@isaacs/fs-minipass@4.0.1':
resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
engines: {node: '>=18.0.0'}
@@ -325,6 +366,9 @@ packages:
'@leichtgewicht/ip-codec@2.0.5':
resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==}
+ '@lightprotocol/hasher.rs@0.2.1':
+ resolution: {integrity: sha512-uslXM+t8kIOeQKccS8eJIPhVglnaIrz06AUVYJjeR9RHM/26KFEKK431a5mBxvaAwVhRLM0s9ZFN+C9wKgNAjA==}
+
'@module-federation/error-codes@0.22.0':
resolution: {integrity: sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==}
@@ -346,10 +390,17 @@ packages:
'@napi-rs/wasm-runtime@1.0.7':
resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==}
+ '@noble/curves@1.2.0':
+ resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==}
+
'@noble/curves@1.9.7':
resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==}
engines: {node: ^14.21.3 || >=16}
+ '@noble/hashes@1.3.2':
+ resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==}
+ engines: {node: '>= 16'}
+
'@noble/hashes@1.8.0':
resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
engines: {node: ^14.21.3 || >=16}
@@ -1092,22 +1143,58 @@ packages:
'@rspack/lite-tapable@1.1.0':
resolution: {integrity: sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==}
+ '@solana/buffer-layout-utils@0.2.0':
+ resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==}
+ engines: {node: '>= 10'}
+
'@solana/buffer-layout@4.0.1':
resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==}
engines: {node: '>=5.10'}
+ '@solana/codecs-core@2.0.0-rc.1':
+ resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==}
+ peerDependencies:
+ typescript: '>=5'
+
'@solana/codecs-core@2.3.0':
resolution: {integrity: sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==}
engines: {node: '>=20.18.0'}
peerDependencies:
typescript: '>=5.3.3'
+ '@solana/codecs-data-structures@2.0.0-rc.1':
+ resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==}
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/codecs-numbers@2.0.0-rc.1':
+ resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==}
+ peerDependencies:
+ typescript: '>=5'
+
'@solana/codecs-numbers@2.3.0':
resolution: {integrity: sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==}
engines: {node: '>=20.18.0'}
peerDependencies:
typescript: '>=5.3.3'
+ '@solana/codecs-strings@2.0.0-rc.1':
+ resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==}
+ peerDependencies:
+ fastestsmallesttextencoderdecoder: ^1.0.22
+ typescript: '>=5'
+
+ '@solana/codecs@2.0.0-rc.1':
+ resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==}
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/errors@2.0.0-rc.1':
+ resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==}
+ hasBin: true
+ peerDependencies:
+ typescript: '>=5'
+
'@solana/errors@2.3.0':
resolution: {integrity: sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==}
engines: {node: '>=20.18.0'}
@@ -1115,6 +1202,29 @@ packages:
peerDependencies:
typescript: '>=5.3.3'
+ '@solana/options@2.0.0-rc.1':
+ resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==}
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/spl-token-group@0.0.7':
+ resolution: {integrity: sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ '@solana/web3.js': ^1.95.3
+
+ '@solana/spl-token-metadata@0.1.6':
+ resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ '@solana/web3.js': ^1.95.3
+
+ '@solana/spl-token@0.4.14':
+ resolution: {integrity: sha512-u09zr96UBpX4U685MnvQsNzlvw9TiY005hk1vJmJr7gMJldoPG1eYU5/wNEyOA5lkMLiR/gOi9SFD4MefOYEsA==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ '@solana/web3.js': ^1.95.5
+
'@solana/web3.js@1.98.4':
resolution: {integrity: sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==}
@@ -1212,6 +1322,9 @@ packages:
'@tybys/wasm-util@0.10.1':
resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
+ '@types/bn.js@5.2.0':
+ resolution: {integrity: sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==}
+
'@types/body-parser@1.19.6':
resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==}
@@ -1290,6 +1403,9 @@ packages:
'@types/node@22.0.0':
resolution: {integrity: sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==}
+ '@types/node@22.7.5':
+ resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==}
+
'@types/qs@6.14.0':
resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==}
@@ -1317,6 +1433,9 @@ packages:
'@types/serve-static@1.15.10':
resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==}
+ '@types/snarkjs@0.7.9':
+ resolution: {integrity: sha512-pb4Bq3GI2YQOQOG0dR/YuQs/mqcuL6k/vnz68LIPtpA2frrUL3twf69a3AUK9eUmNNeW0RIKkq6scDlC75Is+g==}
+
'@types/sockjs@0.3.36':
resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==}
@@ -1342,6 +1461,9 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
+ aes-js@4.0.0-beta.5:
+ resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==}
+
agentkeepalive@4.6.0:
resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==}
engines: {node: '>= 8.0.0'}
@@ -1381,6 +1503,9 @@ packages:
array-flatten@1.1.1:
resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+ async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+
autoprefixer@10.4.20:
resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==}
engines: {node: ^10 || ^12 || >=14}
@@ -1392,6 +1517,9 @@ packages:
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
engines: {node: '>= 0.4'}
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
base-x@3.0.11:
resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==}
@@ -1411,13 +1539,30 @@ packages:
batch@0.6.1:
resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==}
+ bfj@7.1.0:
+ resolution: {integrity: sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==}
+ engines: {node: '>= 8.0.0'}
+
+ bigint-buffer@1.1.5:
+ resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==}
+ engines: {node: '>= 10.0.0'}
+
+ bignumber.js@9.3.1:
+ resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==}
+
binary-extensions@2.3.0:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
engines: {node: '>=8'}
+ bindings@1.5.0:
+ resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+
bip39@3.1.0:
resolution: {integrity: sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==}
+ bluebird@3.7.2:
+ resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
+
bn.js@5.2.2:
resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==}
@@ -1431,6 +1576,12 @@ packages:
borsh@0.7.0:
resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==}
+ borsh@2.0.0:
+ resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==}
+
+ brace-expansion@2.0.2:
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+
braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
@@ -1449,6 +1600,10 @@ packages:
bs58@6.0.0:
resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==}
+ buffer-layout@1.2.2:
+ resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==}
+ engines: {node: '>=4.5'}
+
buffer@6.0.3:
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
@@ -1480,6 +1635,10 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
+ camelcase@6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+
caniuse-lite@1.0.30001764:
resolution: {integrity: sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==}
@@ -1487,6 +1646,9 @@ packages:
resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+ check-types@11.2.3:
+ resolution: {integrity: sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==}
+
chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
@@ -1499,6 +1661,10 @@ packages:
resolution: {integrity: sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==}
engines: {node: '>= 0.10'}
+ circom_runtime@0.1.28:
+ resolution: {integrity: sha512-ACagpQ7zBRLKDl5xRZ4KpmYIcZDUjOiNRuxvXLqhnnlLSVY1Dbvh73TI853nqoR0oEbihtWmMSjgc5f+pXf/jQ==}
+ hasBin: true
+
class-variance-authority@0.7.1:
resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
@@ -1515,6 +1681,10 @@ packages:
colorette@2.0.20:
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
+ commander@12.1.0:
+ resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
+ engines: {node: '>=18'}
+
commander@14.0.2:
resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==}
engines: {node: '>=20'}
@@ -1571,6 +1741,9 @@ packages:
create-hmac@1.1.7:
resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==}
+ cross-fetch@3.2.0:
+ resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==}
+
csstype@3.2.3:
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
@@ -1647,6 +1820,9 @@ packages:
decimal.js-light@2.5.1:
resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==}
+ deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+
default-browser-id@5.0.1:
resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==}
engines: {node: '>=18'}
@@ -1713,6 +1889,11 @@ packages:
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+ ejs@3.1.10:
+ resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+
electron-to-chromium@1.5.267:
resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==}
@@ -1773,10 +1954,37 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
+ escodegen@1.14.3:
+ resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==}
+ engines: {node: '>=4.0'}
+ hasBin: true
+
+ esprima@1.2.2:
+ resolution: {integrity: sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ esprima@4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ estraverse@4.3.0:
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
+
+ esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
etag@1.8.1:
resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
engines: {node: '>= 0.6'}
+ ethers@6.16.0:
+ resolution: {integrity: sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==}
+ engines: {node: '>=14.0.0'}
+
eventemitter3@4.0.7:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
@@ -1802,16 +2010,37 @@ packages:
resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==}
engines: {node: '>=6.0.0'}
+ fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+
fast-stable-stringify@1.0.0:
resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==}
fast-uri@3.1.0:
resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
+ fastestsmallesttextencoderdecoder@1.0.22:
+ resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==}
+
+ fastfile@0.0.20:
+ resolution: {integrity: sha512-r5ZDbgImvVWCP0lA/cGNgQcZqR+aYdFx3u+CtJqUE510pBUVGMn4ulL/iRTI4tACTYsNJ736uzFxEBXesPAktA==}
+
faye-websocket@0.11.4:
resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==}
engines: {node: '>=0.8.0'}
+ ffjavascript@0.3.0:
+ resolution: {integrity: sha512-l7sR5kmU3gRwDy8g0Z2tYBXy5ttmafRPFOqY7S6af5cq51JqJWt5eQ/lSR/rs2wQNbDYaYlQr5O+OSUf/oMLoQ==}
+
+ ffjavascript@0.3.1:
+ resolution: {integrity: sha512-4PbK1WYodQtuF47D4pRI5KUg3Q392vuP5WjE1THSnceHdXwU3ijaoS0OqxTzLknCtz4Z2TtABzkBdBdMn3B/Aw==}
+
+ file-uri-to-path@1.0.0:
+ resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
+
+ filelist@1.0.4:
+ resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
+
fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
@@ -1903,10 +2132,17 @@ packages:
resolution: {integrity: sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==}
engines: {node: '>= 0.8'}
+ hash.js@1.1.7:
+ resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==}
+
hasown@2.0.2:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
+ hoopy@0.1.4:
+ resolution: {integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==}
+ engines: {node: '>= 6.0.0'}
+
hpack.js@2.1.6:
resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==}
@@ -1958,6 +2194,10 @@ packages:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
+ imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+
inherits@2.0.3:
resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
@@ -2042,6 +2282,11 @@ packages:
peerDependencies:
ws: '*'
+ jake@10.9.4:
+ resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
jayson@4.3.0:
resolution: {integrity: sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ==}
engines: {node: '>=8'}
@@ -2051,6 +2296,9 @@ packages:
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
hasBin: true
+ js-sha3@0.8.0:
+ resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==}
+
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -2067,9 +2315,16 @@ packages:
json-stringify-safe@5.0.1:
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
+ jsonpath@1.1.1:
+ resolution: {integrity: sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==}
+
launch-editor@2.12.0:
resolution: {integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==}
+ levn@0.3.0:
+ resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==}
+ engines: {node: '>= 0.8.0'}
+
lightningcss-darwin-arm64@1.30.1:
resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==}
engines: {node: '>= 12.0.0'}
@@ -2140,6 +2395,9 @@ packages:
lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ logplease@1.2.15:
+ resolution: {integrity: sha512-jLlHnlsPSJjpwUfcNyUxXCl33AYg2cHhIf9QhGL2T4iPT0XPB+xP1LRKFPgIg1M/sg9kAJvy94w9CzBNrfnstA==}
+
loose-envify@1.4.0:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
@@ -2201,6 +2459,10 @@ packages:
minimalistic-assert@1.0.1:
resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
+ minimatch@5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+ engines: {node: '>=10'}
+
minipass@7.1.2:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -2259,6 +2521,10 @@ packages:
resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
hasBin: true
+ node-localstorage@3.0.5:
+ resolution: {integrity: sha512-GCwtK33iwVXboZWYcqQHu3aRvXEBwmPkAMRBLeaX86ufhqslyUkLGsi4aW3INEfdQYpUB5M9qtYf3eHvAk2VBg==}
+ engines: {node: '>=0.12'}
+
node-releases@2.0.27:
resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
@@ -2297,10 +2563,17 @@ packages:
resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==}
hasBin: true
+ optionator@0.8.3:
+ resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==}
+ engines: {node: '>= 0.8.0'}
+
p-retry@6.2.1:
resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==}
engines: {node: '>=16.17'}
+ pako@2.1.0:
+ resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==}
+
parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
@@ -2347,6 +2620,13 @@ packages:
resolution: {integrity: sha512-27VKOqrYfPncKA2NrFOVhP5MGAfHKLYn/Q0mz9cNQyRAKYi3VNHwYU2qKKqPCqgBmeeJ0uAFB56NumXZ5ZReXg==}
engines: {node: ^10 || ^12 || >=14}
+ prelude-ls@1.1.2:
+ resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
+ engines: {node: '>= 0.8.0'}
+
+ privacycash@1.1.11:
+ resolution: {integrity: sha512-iUJ+RZWTfYTPLiInrfRcKLXH37gYukCDMSDQp49/Hv3SixNOzB/jthiJGV+68SZJDwxdXh+MVQPOAJKPdg2DVw==}
+
process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
@@ -2361,6 +2641,9 @@ packages:
resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==}
engines: {node: '>=0.6'}
+ r1csfile@0.0.48:
+ resolution: {integrity: sha512-kHRkKUJNaor31l05f2+RFzvcH5XSa7OfEfd/l4hzjte6NL6fjRkSMfZ4BjySW9wmfdwPOtq3mXurzPvPGEf5Tw==}
+
range-parser@1.2.1:
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
engines: {node: '>= 0.6'}
@@ -2566,10 +2849,18 @@ packages:
resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
engines: {node: '>= 0.4'}
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
sirv@2.0.4:
resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
engines: {node: '>= 10'}
+ snarkjs@0.7.6:
+ resolution: {integrity: sha512-4uH1xA5JzVU5jaaWS2fXej3+RC6L5Erhr6INTJtUA27du4Elbh4VXCeeRjB4QiwL6N6y7SNKePw5prTxyEf4Zg==}
+ hasBin: true
+
sockjs@0.3.24:
resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==}
@@ -2583,6 +2874,10 @@ packages:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
spdy-transport@3.0.0:
resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==}
@@ -2590,6 +2885,9 @@ packages:
resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==}
engines: {node: '>=6.0.0'}
+ static-eval@2.0.2:
+ resolution: {integrity: sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==}
+
statuses@1.5.0:
resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
engines: {node: '>= 0.6'}
@@ -2607,6 +2905,9 @@ packages:
string_decoder@1.1.1:
resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+ superstruct@0.15.5:
+ resolution: {integrity: sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==}
+
superstruct@2.0.2:
resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==}
engines: {node: '>=14.0.0'}
@@ -2645,6 +2946,13 @@ packages:
tiny-invariant@1.3.3:
resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
+ tmp-promise@3.0.3:
+ resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==}
+
+ tmp@0.2.5:
+ resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==}
+ engines: {node: '>=14.14'}
+
to-buffer@1.2.2:
resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==}
engines: {node: '>= 0.4'}
@@ -2657,6 +2965,9 @@ packages:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
+ toml@3.0.0:
+ resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==}
+
totalist@3.0.1:
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
engines: {node: '>=6'}
@@ -2670,12 +2981,22 @@ packages:
peerDependencies:
tslib: '2'
+ tryer@1.0.1:
+ resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==}
+
+ tslib@2.7.0:
+ resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==}
+
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
tweetnacl@1.0.3:
resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==}
+ type-check@0.3.2:
+ resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==}
+ engines: {node: '>= 0.8.0'}
+
type-is@1.6.18:
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
engines: {node: '>= 0.6'}
@@ -2689,9 +3010,15 @@ packages:
engines: {node: '>=12.20'}
hasBin: true
+ underscore@1.12.1:
+ resolution: {integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==}
+
undici-types@6.11.1:
resolution: {integrity: sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==}
+ undici-types@6.19.8:
+ resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
+
unpipe@1.0.0:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
@@ -2755,9 +3082,18 @@ packages:
victory-vendor@36.9.2:
resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==}
+ wasmbuilder@0.0.16:
+ resolution: {integrity: sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA==}
+
+ wasmcurves@0.2.2:
+ resolution: {integrity: sha512-JRY908NkmKjFl4ytnTu5ED6AwPD+8VJ9oc94kdq7h5bIwbj0L4TDJ69mG+2aLs2SoCmGfqIesMWTEJjtYsoQXQ==}
+
wbuf@1.7.3:
resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==}
+ web-worker@1.2.0:
+ resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==}
+
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
@@ -2803,6 +3139,14 @@ packages:
resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==}
engines: {node: '>= 0.4'}
+ word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+
+ write-file-atomic@5.0.1:
+ resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
ws@7.5.10:
resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==}
engines: {node: '>=8.3.0'}
@@ -2815,6 +3159,18 @@ packages:
utf-8-validate:
optional: true
+ ws@8.17.1:
+ resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
ws@8.19.0:
resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==}
engines: {node: '>=10.0.0'}
@@ -2840,6 +3196,8 @@ packages:
snapshots:
+ '@adraffy/ens-normalize@1.10.1': {}
+
'@alloc/quick-lru@5.2.0': {}
'@ampproject/remapping@2.3.0':
@@ -2857,6 +3215,35 @@ snapshots:
'@babel/runtime@7.28.6': {}
+ '@coral-xyz/anchor-errors@0.31.1': {}
+
+ '@coral-xyz/anchor@0.31.1(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@coral-xyz/anchor-errors': 0.31.1
+ '@coral-xyz/borsh': 0.31.1(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10))
+ '@noble/hashes': 1.8.0
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ bs58: 4.0.1
+ buffer-layout: 1.2.2
+ camelcase: 6.3.0
+ cross-fetch: 3.2.0
+ eventemitter3: 4.0.7
+ pako: 2.1.0
+ superstruct: 0.15.5
+ toml: 3.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+
+ '@coral-xyz/borsh@0.31.1(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10))':
+ dependencies:
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10)
+ bn.js: 5.2.2
+ buffer-layout: 1.2.2
+
'@date-fns/tz@1.2.0': {}
'@discoveryjs/json-ext@0.5.7': {}
@@ -2877,6 +3264,23 @@ snapshots:
tslib: 2.8.1
optional: true
+ '@ethersproject/bytes@5.8.0':
+ dependencies:
+ '@ethersproject/logger': 5.8.0
+
+ '@ethersproject/keccak256@5.8.0':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ js-sha3: 0.8.0
+
+ '@ethersproject/logger@5.8.0': {}
+
+ '@ethersproject/sha2@5.8.0':
+ dependencies:
+ '@ethersproject/bytes': 5.8.0
+ '@ethersproject/logger': 5.8.0
+ hash.js: 1.1.7
+
'@floating-ui/core@1.7.3':
dependencies:
'@floating-ui/utils': 0.2.10
@@ -2898,6 +3302,13 @@ snapshots:
dependencies:
react-hook-form: 7.60.0(react@19.2.0)
+ '@iden3/bigarray@0.0.2': {}
+
+ '@iden3/binfileutils@0.0.12':
+ dependencies:
+ fastfile: 0.0.20
+ ffjavascript: 0.3.1
+
'@isaacs/fs-minipass@4.0.1':
dependencies:
minipass: 7.1.2
@@ -2954,6 +3365,8 @@ snapshots:
'@leichtgewicht/ip-codec@2.0.5': {}
+ '@lightprotocol/hasher.rs@0.2.1': {}
+
'@module-federation/error-codes@0.22.0': {}
'@module-federation/runtime-core@0.22.0':
@@ -2986,10 +3399,16 @@ snapshots:
'@tybys/wasm-util': 0.10.1
optional: true
+ '@noble/curves@1.2.0':
+ dependencies:
+ '@noble/hashes': 1.3.2
+
'@noble/curves@1.9.7':
dependencies:
'@noble/hashes': 1.8.0
+ '@noble/hashes@1.3.2': {}
+
'@noble/hashes@1.8.0': {}
'@polka/url@1.0.0-next.29': {}
@@ -3784,27 +4203,124 @@ snapshots:
'@rspack/lite-tapable@1.1.0': {}
+ '@solana/buffer-layout-utils@0.2.0(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@solana/buffer-layout': 4.0.1
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10)
+ bigint-buffer: 1.1.5
+ bignumber.js: 9.3.1
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+
'@solana/buffer-layout@4.0.1':
dependencies:
buffer: 6.0.3
+ '@solana/codecs-core@2.0.0-rc.1(typescript@5.0.2)':
+ dependencies:
+ '@solana/errors': 2.0.0-rc.1(typescript@5.0.2)
+ typescript: 5.0.2
+
'@solana/codecs-core@2.3.0(typescript@5.0.2)':
dependencies:
'@solana/errors': 2.3.0(typescript@5.0.2)
typescript: 5.0.2
+ '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.0.2)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.0.2)
+ '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.0.2)
+ '@solana/errors': 2.0.0-rc.1(typescript@5.0.2)
+ typescript: 5.0.2
+
+ '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.0.2)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.0.2)
+ '@solana/errors': 2.0.0-rc.1(typescript@5.0.2)
+ typescript: 5.0.2
+
'@solana/codecs-numbers@2.3.0(typescript@5.0.2)':
dependencies:
'@solana/codecs-core': 2.3.0(typescript@5.0.2)
'@solana/errors': 2.3.0(typescript@5.0.2)
typescript: 5.0.2
+ '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.0.2)
+ '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.0.2)
+ '@solana/errors': 2.0.0-rc.1(typescript@5.0.2)
+ fastestsmallesttextencoderdecoder: 1.0.22
+ typescript: 5.0.2
+
+ '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.0.2)
+ '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.0.2)
+ '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.0.2)
+ '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)
+ '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)
+ typescript: 5.0.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/errors@2.0.0-rc.1(typescript@5.0.2)':
+ dependencies:
+ chalk: 5.6.2
+ commander: 12.1.0
+ typescript: 5.0.2
+
'@solana/errors@2.3.0(typescript@5.0.2)':
dependencies:
chalk: 5.6.2
commander: 14.0.2
typescript: 5.0.2
+ '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.0.2)
+ '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.0.2)
+ '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.0.2)
+ '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)
+ '@solana/errors': 2.0.0-rc.1(typescript@5.0.2)
+ typescript: 5.0.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)':
+ dependencies:
+ '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+ - typescript
+
+ '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)':
+ dependencies:
+ '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+ - typescript
+
+ '@solana/spl-token@0.4.14(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)(utf-8-validate@5.0.10)':
+ dependencies:
+ '@solana/buffer-layout': 4.0.1
+ '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10)
+ '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)
+ '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10)
+ buffer: 6.0.3
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - fastestsmallesttextencoderdecoder
+ - typescript
+ - utf-8-validate
+
'@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10)':
dependencies:
'@babel/runtime': 7.28.6
@@ -3909,6 +4425,10 @@ snapshots:
tslib: 2.8.1
optional: true
+ '@types/bn.js@5.2.0':
+ dependencies:
+ '@types/node': 22.0.0
+
'@types/body-parser@1.19.6':
dependencies:
'@types/connect': 3.4.38
@@ -3998,6 +4518,10 @@ snapshots:
dependencies:
undici-types: 6.11.1
+ '@types/node@22.7.5':
+ dependencies:
+ undici-types: 6.19.8
+
'@types/qs@6.14.0': {}
'@types/range-parser@1.2.7': {}
@@ -4031,6 +4555,8 @@ snapshots:
'@types/node': 22.0.0
'@types/send': 0.17.6
+ '@types/snarkjs@0.7.9': {}
+
'@types/sockjs@0.3.36':
dependencies:
'@types/node': 22.0.0
@@ -4056,6 +4582,8 @@ snapshots:
acorn@8.15.0: {}
+ aes-js@4.0.0-beta.5: {}
+
agentkeepalive@4.6.0:
dependencies:
humanize-ms: 1.2.1
@@ -4091,6 +4619,8 @@ snapshots:
array-flatten@1.1.1: {}
+ async@3.2.6: {}
+
autoprefixer@10.4.20(postcss@8.5.0):
dependencies:
browserslist: 4.28.1
@@ -4105,6 +4635,8 @@ snapshots:
dependencies:
possible-typed-array-names: 1.1.0
+ balanced-match@1.0.2: {}
+
base-x@3.0.11:
dependencies:
safe-buffer: 5.2.1
@@ -4119,12 +4651,32 @@ snapshots:
batch@0.6.1: {}
+ bfj@7.1.0:
+ dependencies:
+ bluebird: 3.7.2
+ check-types: 11.2.3
+ hoopy: 0.1.4
+ jsonpath: 1.1.1
+ tryer: 1.0.1
+
+ bigint-buffer@1.1.5:
+ dependencies:
+ bindings: 1.5.0
+
+ bignumber.js@9.3.1: {}
+
binary-extensions@2.3.0: {}
+ bindings@1.5.0:
+ dependencies:
+ file-uri-to-path: 1.0.0
+
bip39@3.1.0:
dependencies:
'@noble/hashes': 1.8.0
+ bluebird@3.7.2: {}
+
bn.js@5.2.2: {}
body-parser@1.20.4:
@@ -4155,6 +4707,12 @@ snapshots:
bs58: 4.0.1
text-encoding-utf-8: 1.0.2
+ borsh@2.0.0: {}
+
+ brace-expansion@2.0.2:
+ dependencies:
+ balanced-match: 1.0.2
+
braces@3.0.3:
dependencies:
fill-range: 7.1.1
@@ -4179,6 +4737,8 @@ snapshots:
dependencies:
base-x: 5.0.1
+ buffer-layout@1.2.2: {}
+
buffer@6.0.3:
dependencies:
base64-js: 1.5.1
@@ -4214,10 +4774,14 @@ snapshots:
callsites@3.1.0: {}
+ camelcase@6.3.0: {}
+
caniuse-lite@1.0.30001764: {}
chalk@5.6.2: {}
+ check-types@11.2.3: {}
+
chokidar@3.6.0:
dependencies:
anymatch: 3.1.3
@@ -4238,6 +4802,10 @@ snapshots:
safe-buffer: 5.2.1
to-buffer: 1.2.2
+ circom_runtime@0.1.28:
+ dependencies:
+ ffjavascript: 0.3.1
+
class-variance-authority@0.7.1:
dependencies:
clsx: 2.1.1
@@ -4258,6 +4826,8 @@ snapshots:
colorette@2.0.20: {}
+ commander@12.1.0: {}
+
commander@14.0.2: {}
commander@2.20.3: {}
@@ -4320,6 +4890,12 @@ snapshots:
safe-buffer: 5.2.1
sha.js: 2.4.12
+ cross-fetch@3.2.0:
+ dependencies:
+ node-fetch: 2.7.0
+ transitivePeerDependencies:
+ - encoding
+
csstype@3.2.3: {}
d3-array@3.2.4:
@@ -4376,6 +4952,8 @@ snapshots:
decimal.js-light@2.5.1: {}
+ deep-is@0.1.4: {}
+
default-browser-id@5.0.1: {}
default-browser@5.4.0:
@@ -4431,6 +5009,10 @@ snapshots:
ee-first@1.1.1: {}
+ ejs@3.1.10:
+ dependencies:
+ jake: 10.9.4
+
electron-to-chromium@1.5.267: {}
embla-carousel-react@8.5.1(react@19.2.0):
@@ -4478,8 +5060,38 @@ snapshots:
escape-string-regexp@4.0.0: {}
+ escodegen@1.14.3:
+ dependencies:
+ esprima: 4.0.1
+ estraverse: 4.3.0
+ esutils: 2.0.3
+ optionator: 0.8.3
+ optionalDependencies:
+ source-map: 0.6.1
+
+ esprima@1.2.2: {}
+
+ esprima@4.0.1: {}
+
+ estraverse@4.3.0: {}
+
+ esutils@2.0.3: {}
+
etag@1.8.1: {}
+ ethers@6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ dependencies:
+ '@adraffy/ens-normalize': 1.10.1
+ '@noble/curves': 1.2.0
+ '@noble/hashes': 1.3.2
+ '@types/node': 22.7.5
+ aes-js: 4.0.0-beta.5
+ tslib: 2.7.0
+ ws: 8.17.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
eventemitter3@4.0.7: {}
eventemitter3@5.0.1: {}
@@ -4528,14 +5140,38 @@ snapshots:
fast-equals@5.4.0: {}
+ fast-levenshtein@2.0.6: {}
+
fast-stable-stringify@1.0.0: {}
fast-uri@3.1.0: {}
+ fastestsmallesttextencoderdecoder@1.0.22: {}
+
+ fastfile@0.0.20: {}
+
faye-websocket@0.11.4:
dependencies:
websocket-driver: 0.7.4
+ ffjavascript@0.3.0:
+ dependencies:
+ wasmbuilder: 0.0.16
+ wasmcurves: 0.2.2
+ web-worker: 1.2.0
+
+ ffjavascript@0.3.1:
+ dependencies:
+ wasmbuilder: 0.0.16
+ wasmcurves: 0.2.2
+ web-worker: 1.2.0
+
+ file-uri-to-path@1.0.0: {}
+
+ filelist@1.0.4:
+ dependencies:
+ minimatch: 5.1.6
+
fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
@@ -4624,10 +5260,17 @@ snapshots:
safe-buffer: 5.2.1
to-buffer: 1.2.2
+ hash.js@1.1.7:
+ dependencies:
+ inherits: 2.0.4
+ minimalistic-assert: 1.0.1
+
hasown@2.0.2:
dependencies:
function-bind: 1.1.2
+ hoopy@0.1.4: {}
+
hpack.js@2.1.6:
dependencies:
inherits: 2.0.4
@@ -4693,6 +5336,8 @@ snapshots:
parent-module: 1.0.1
resolve-from: 4.0.0
+ imurmurhash@0.1.4: {}
+
inherits@2.0.3: {}
inherits@2.0.4: {}
@@ -4750,6 +5395,12 @@ snapshots:
dependencies:
ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ jake@10.9.4:
+ dependencies:
+ async: 3.2.6
+ filelist: 1.0.4
+ picocolors: 1.1.1
+
jayson@4.3.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@types/connect': 3.4.38
@@ -4770,6 +5421,8 @@ snapshots:
jiti@2.6.1: {}
+ js-sha3@0.8.0: {}
+
js-tokens@4.0.0: {}
js-yaml@4.1.1:
@@ -4782,11 +5435,22 @@ snapshots:
json-stringify-safe@5.0.1: {}
+ jsonpath@1.1.1:
+ dependencies:
+ esprima: 1.2.2
+ static-eval: 2.0.2
+ underscore: 1.12.1
+
launch-editor@2.12.0:
dependencies:
picocolors: 1.1.1
shell-quote: 1.8.3
+ levn@0.3.0:
+ dependencies:
+ prelude-ls: 1.1.2
+ type-check: 0.3.2
+
lightningcss-darwin-arm64@1.30.1:
optional: true
@@ -4836,6 +5500,8 @@ snapshots:
lodash@4.17.21: {}
+ logplease@1.2.15: {}
+
loose-envify@1.4.0:
dependencies:
js-tokens: 4.0.0
@@ -4892,6 +5558,10 @@ snapshots:
minimalistic-assert@1.0.1: {}
+ minimatch@5.1.6:
+ dependencies:
+ brace-expansion: 2.0.2
+
minipass@7.1.2: {}
minizlib@3.1.0:
@@ -4929,6 +5599,10 @@ snapshots:
node-gyp-build@4.8.4:
optional: true
+ node-localstorage@3.0.5:
+ dependencies:
+ write-file-atomic: 5.0.1
+
node-releases@2.0.27: {}
normalize-path@3.0.0: {}
@@ -4956,12 +5630,23 @@ snapshots:
opener@1.5.2: {}
+ optionator@0.8.3:
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.3.0
+ prelude-ls: 1.1.2
+ type-check: 0.3.2
+ word-wrap: 1.2.5
+
p-retry@6.2.1:
dependencies:
'@types/retry': 0.12.2
is-network-error: 1.3.0
retry: 0.13.1
+ pako@2.1.0: {}
+
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
@@ -5002,6 +5687,35 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ prelude-ls@1.1.2: {}
+
+ privacycash@1.1.11(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)(utf-8-validate@5.0.10):
+ dependencies:
+ '@coral-xyz/anchor': 0.31.1(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10)
+ '@ethersproject/keccak256': 5.8.0
+ '@ethersproject/sha2': 5.8.0
+ '@lightprotocol/hasher.rs': 0.2.1
+ '@solana/spl-token': 0.4.14(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.0.2)(utf-8-validate@5.0.10)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.0.2)(utf-8-validate@5.0.10)
+ '@types/bn.js': 5.2.0
+ '@types/snarkjs': 0.7.9
+ bn.js: 5.2.2
+ borsh: 2.0.0
+ bs58: 6.0.0
+ dotenv: 17.2.3
+ ethers: 6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ ffjavascript: 0.3.1
+ node-localstorage: 3.0.5
+ snarkjs: 0.7.6
+ tmp-promise: 3.0.3
+ tweetnacl: 1.0.3
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - fastestsmallesttextencoderdecoder
+ - typescript
+ - utf-8-validate
+
process-nextick-args@2.0.1: {}
prop-types@15.8.1:
@@ -5019,6 +5733,13 @@ snapshots:
dependencies:
side-channel: 1.1.0
+ r1csfile@0.0.48:
+ dependencies:
+ '@iden3/bigarray': 0.0.2
+ '@iden3/binfileutils': 0.0.12
+ fastfile: 0.0.20
+ ffjavascript: 0.3.0
+
range-parser@1.2.1: {}
raw-body@2.5.3:
@@ -5276,12 +5997,26 @@ snapshots:
side-channel-map: 1.0.1
side-channel-weakmap: 1.0.2
+ signal-exit@4.1.0: {}
+
sirv@2.0.4:
dependencies:
'@polka/url': 1.0.0-next.29
mrmime: 2.0.1
totalist: 3.0.1
+ snarkjs@0.7.6:
+ dependencies:
+ '@iden3/binfileutils': 0.0.12
+ '@noble/hashes': 1.8.0
+ bfj: 7.1.0
+ circom_runtime: 0.1.28
+ ejs: 3.1.10
+ fastfile: 0.0.20
+ ffjavascript: 0.3.1
+ logplease: 1.2.15
+ r1csfile: 0.0.48
+
sockjs@0.3.24:
dependencies:
faye-websocket: 0.11.4
@@ -5295,6 +6030,9 @@ snapshots:
source-map-js@1.2.1: {}
+ source-map@0.6.1:
+ optional: true
+
spdy-transport@3.0.0:
dependencies:
debug: 4.4.3
@@ -5316,6 +6054,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ static-eval@2.0.2:
+ dependencies:
+ escodegen: 1.14.3
+
statuses@1.5.0: {}
statuses@2.0.2: {}
@@ -5330,6 +6072,8 @@ snapshots:
dependencies:
safe-buffer: 5.1.2
+ superstruct@0.15.5: {}
+
superstruct@2.0.2: {}
tailwind-merge@3.3.1: {}
@@ -5360,6 +6104,12 @@ snapshots:
tiny-invariant@1.3.3: {}
+ tmp-promise@3.0.3:
+ dependencies:
+ tmp: 0.2.5
+
+ tmp@0.2.5: {}
+
to-buffer@1.2.2:
dependencies:
isarray: 2.0.5
@@ -5372,6 +6122,8 @@ snapshots:
toidentifier@1.0.1: {}
+ toml@3.0.0: {}
+
totalist@3.0.1: {}
tr46@0.0.3: {}
@@ -5380,10 +6132,18 @@ snapshots:
dependencies:
tslib: 2.8.1
+ tryer@1.0.1: {}
+
+ tslib@2.7.0: {}
+
tslib@2.8.1: {}
tweetnacl@1.0.3: {}
+ type-check@0.3.2:
+ dependencies:
+ prelude-ls: 1.1.2
+
type-is@1.6.18:
dependencies:
media-typer: 0.3.0
@@ -5397,8 +6157,12 @@ snapshots:
typescript@5.0.2: {}
+ underscore@1.12.1: {}
+
undici-types@6.11.1: {}
+ undici-types@6.19.8: {}
+
unpipe@1.0.0: {}
update-browserslist-db@1.2.3(browserslist@4.28.1):
@@ -5465,10 +6229,18 @@ snapshots:
d3-time: 3.1.0
d3-timer: 3.0.1
+ wasmbuilder@0.0.16: {}
+
+ wasmcurves@0.2.2:
+ dependencies:
+ wasmbuilder: 0.0.16
+
wbuf@1.7.3:
dependencies:
minimalistic-assert: 1.0.1
+ web-worker@1.2.0: {}
+
webidl-conversions@3.0.1: {}
webpack-bundle-analyzer@4.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10):
@@ -5557,11 +6329,23 @@ snapshots:
gopd: 1.2.0
has-tostringtag: 1.0.2
+ word-wrap@1.2.5: {}
+
+ write-file-atomic@5.0.1:
+ dependencies:
+ imurmurhash: 0.1.4
+ signal-exit: 4.1.0
+
ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10):
optionalDependencies:
bufferutil: 4.1.0
utf-8-validate: 5.0.10
+ ws@8.17.1(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ optionalDependencies:
+ bufferutil: 4.1.0
+ utf-8-validate: 5.0.10
+
ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
optionalDependencies:
bufferutil: 4.1.0
diff --git a/public/circuit2/transaction2.wasm b/public/circuit2/transaction2.wasm
new file mode 100644
index 0000000..fe752ce
Binary files /dev/null and b/public/circuit2/transaction2.wasm differ
diff --git a/public/circuit2/transaction2.zkey b/public/circuit2/transaction2.zkey
new file mode 100644
index 0000000..75c1303
Binary files /dev/null and b/public/circuit2/transaction2.zkey differ
diff --git a/rspack.config.ts b/rspack.config.ts
index c409ca6..7873075 100644
--- a/rspack.config.ts
+++ b/rspack.config.ts
@@ -7,7 +7,7 @@ config();
export default defineConfig({
mode: process.env.NODE_ENV === "production" ? "production" : "development",
entry: {
- popup: "./src/popup.tsx",
+ popup: ["./src/popup.tsx", "./node_modules/buffer/index.js"],
"service-worker": "./src/service-worker.ts",
"content-script": "./src/content-script.ts",
"onboarding-entry": "./src/onboarding-entry.tsx",
@@ -57,6 +57,11 @@ export default defineConfig({
new (require("@rspack/core").DefinePlugin)({
"process.env.SOLANA_RPC_URL": JSON.stringify(process.env.SOLANA_RPC_URL),
}),
+ new (require("@rspack/core").DefinePlugin)({
+ global: {
+ Buffer: require.resolve("buffer"),
+ },
+ }),
new (require("@rspack/core").HtmlRspackPlugin)({
template: "./src/popup.html",
filename: "popup.html",
@@ -68,10 +73,31 @@ export default defineConfig({
{ from: "public/manifest.json", to: "manifest.json" },
{ from: "public/*.png", to: "[name][ext]" },
{ from: "public/*.svg", to: "[name][ext]" },
+ // ShadowWire wasm
{
from: "public/wasm/settler_wasm_bg.wasm",
to: "wasm/settler_wasm_bg.wasm",
},
+ // PrivacyCash wasm
+ {
+ from: "public/circuit2/transaction2.wasm",
+ to: "circuit2/transaction2.wasm",
+ },
+ // PrivacyCash zkey
+ {
+ from: "public/circuit2/transaction2.zkey",
+ to: "circuit2/transaction2.zkey",
+ },
+ // PrivacyCash lightprotocol dependency simd wasm
+ {
+ from: "node_modules/@lightprotocol/hasher.rs/dist/hasher_wasm_simd_bg.wasm",
+ to: "wasm/hasher_wasm_simd_bg.wasm",
+ },
+ // PrivacyCash lightprotocol dependency hasher wasm
+ {
+ from: "node_modules/@lightprotocol/hasher.rs/dist/light_wasm_hasher_bg.wasm",
+ to: "wasm/light_wasm_hasher_bg.wasm",
+ },
],
}),
new (require("@rspack/core").HtmlRspackPlugin)({
diff --git a/src/App.tsx b/src/App.tsx
index 55e9827..90e77d5 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -7,6 +7,10 @@ import {
initWASM,
isWASMSupported,
} from "@radr/shadowwire";
+import { getSignedSignature } from "@/lib/privacycash/init-privacycash";
+import { PublicKey } from "@solana/web3.js";
+import { EncryptionService } from "privacycash/utils";
+export * from "privacycash/utils";
export default function App() {
const {
@@ -14,6 +18,11 @@ export default function App() {
isShadowWireInitialized,
setShadowWireClient,
setIsShadowWireInitialized,
+ isPrivacyCashInitialized,
+ setIsPrivacyCashInitialized,
+ activeAccount,
+ signMessage,
+ setEncryptionService,
} = useWallet();
useEffect(() => {
@@ -25,30 +34,52 @@ export default function App() {
}
}, [isOnboarded]);
- // Init shadowwire client and wasm
+ // Init privacy clients and wasm
useEffect(() => {
- async function initShadowWire() {
+ async function initPrivacyClients() {
try {
- // Initialize WASM if in private mode
+ // Initialize WASM if supported
if (!isWASMSupported()) {
throw new WASMNotSupportedError();
}
- const client = new ShadowWireClient({
+ // Initialize ShadowWire
+ const shadowWireClient = new ShadowWireClient({
debug: true, // TODO: remove for production
});
await initWASM("wasm/settler_wasm_bg.wasm");
- setShadowWireClient(client);
+ setShadowWireClient(shadowWireClient);
setIsShadowWireInitialized(true);
+
+ // Initialize PrivacyCash
+ if (!activeAccount) {
+ throw new Error("No active account");
+ }
+
+ const signed = await getSignedSignature(
+ {
+ publicKey: new PublicKey(activeAccount.publicKey),
+ provider: "",
+ },
+ signMessage,
+ );
+ let encryptionService = new EncryptionService();
+ if (!signed.signature) {
+ console.error("Privacy Cash failed to set signature");
+ return;
+ }
+ encryptionService.deriveEncryptionKeyFromSignature(signed.signature);
+ setEncryptionService(encryptionService);
+ setIsPrivacyCashInitialized(true);
} catch (error) {
- console.error("Failed to initialize ShadowWire:", error);
+ console.error("Failed to initialize privacy clients:", error);
}
}
- if (!isShadowWireInitialized) {
- initShadowWire();
+ if (!isShadowWireInitialized || !isPrivacyCashInitialized) {
+ initPrivacyClients();
}
- }, [isShadowWireInitialized]);
+ }, [isShadowWireInitialized, isPrivacyCashInitialized]);
if (!isOnboarded) {
return (