diff --git a/.agent/skills/acta b/.agent/skills/acta new file mode 120000 index 0000000..379e189 --- /dev/null +++ b/.agent/skills/acta @@ -0,0 +1 @@ +../../.agents/skills/acta \ No newline at end of file diff --git a/.agents/skills/acta/.gitignore b/.agents/skills/acta/.gitignore new file mode 100644 index 0000000..c3cfd4a --- /dev/null +++ b/.agents/skills/acta/.gitignore @@ -0,0 +1,51 @@ +# Environment files - NEVER commit API keys! +.env +.env.local +.env.*.local +.env.development.local +.env.test.local +.env.production.local + +# Dependencies +node_modules/ +.pnpm-store/ + +# Build outputs +dist/ +build/ +.next/ +out/ + +# Logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# OS files +.DS_Store +Thumbs.db + +# IDE files +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# Test coverage +coverage/ +.nyc_output/ + +# Temporary files +tmp/ +temp/ +*.tmp + +# Credentials and secrets (extra safety) +*secret* +*credential*.json +*private* +*.pem +*.key diff --git a/.agents/skills/acta/LICENSE b/.agents/skills/acta/LICENSE new file mode 100644 index 0000000..afa3168 --- /dev/null +++ b/.agents/skills/acta/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 acta-skill + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.agents/skills/acta/QUICKSTART.md b/.agents/skills/acta/QUICKSTART.md new file mode 100644 index 0000000..ba3b47e --- /dev/null +++ b/.agents/skills/acta/QUICKSTART.md @@ -0,0 +1,213 @@ +# Quick Start Guide + +Get started with the acta.build verifiable credentials skill in 5 minutes. + +## 1. Install the Skill + +```bash +# From the skill directory +npx skills add . + +# Or from GitHub (when published) +npx skills add wlademyr/acta-skill +``` + +## 2. Test Helper Scripts + +Verify your API connection: + +```bash +npm run test:api +``` + +Validate credential templates: + +```bash +npm run validate:education +npm run validate:employment +npm run validate:identity +``` + +## 3. Invoke the Skill + +In Claude Code: + +``` +$acta help me set up my first credential vault +``` + +Or implicitly: + +``` +I want to issue a verifiable credential for education +``` + +## 4. Common Tasks + +### Issue a Credential + +``` +$acta help me issue an education credential +``` + +The skill will: +- Check your setup (API key, wallet) +- Show you the credential template +- Guide you through the issuance process +- Provide safety confirmations + +### Verify a Credential + +``` +$acta verify this credential: vc:education:degree:12345 +``` + +The skill will: +- Read the credential from the vault +- Check validity and issuer authorization +- Display credential details + +### Set Up a Vault + +``` +$acta create a vault for my wallet +``` + +The skill will: +- Connect to Freighter wallet +- Create vault with your DID +- Confirm successful creation + +## 5. Prerequisites Checklist + +Before using the skill, ensure you have: + +- [ ] **API Key** from https://dapp.acta.build +- [ ] **Freighter Wallet** installed and configured for testnet +- [ ] **API Key in .env.local**: + ``` + ACTA_API_KEY_TESTNET=your_api_key_here + ``` +- [ ] **.env.local in .gitignore** (protect your API key!) +- [ ] **Testnet XLM** funded wallet (free from Stellar Laboratory) + +## 6. File Structure + +``` +acta-skill/ +├── SKILL.md # Main skill definition (read first!) +├── README.md # Installation guide +├── QUICKSTART.md # This file +├── references/ # Detailed documentation +│ ├── platform-overview.md +│ ├── react-sdk-reference.md +│ ├── credential-lifecycle.md +│ ├── vault-management.md +│ └── security-best-practices.md +├── assets/ +│ ├── credential-templates/ # JSON templates +│ └── examples/ # React components +└── scripts/ # Helper utilities + ├── test-api-connection.js + └── validate-credential.js +``` + +## 7. Safety First + +The skill follows these safety principles: + +⚠️ **Mandatory Confirmations** +- All credential operations require explicit approval +- Vault creation requires confirmation +- Issuer revocation requires typing "REVOKE" + +🔐 **Security Best Practices** +- API keys never in code +- Private keys stay in wallet +- Testnet default for development + +🛡️ **Immutability Warnings** +- Credentials cannot be deleted +- Users must understand permanence +- Clear consequences explained + +## 8. Example Workflows + +### Complete Setup (First Time) + +``` +$acta I'm new to verifiable credentials, help me get started +``` + +1. Skill checks prerequisites +2. Guides you to obtain API key +3. Helps configure environment +4. Creates vault +5. Issues first credential + +### Issue Employment Credential + +``` +$acta issue an employment verification credential +``` + +1. Skill loads employment template +2. Prompts for job details +3. Shows confirmation dialog +4. Signs with Freighter +5. Returns credential ID + +### Verify Someone's Credential + +``` +$acta verify credential vc:education:degree:xyz from wallet GXXXXX +``` + +1. Skill queries vault +2. Checks issuer authorization +3. Validates signatures +4. Displays credential data + +## 9. Troubleshooting + +**"API key not found"** +- Create `.env.local` file +- Add `ACTA_API_KEY_TESTNET=your_key` +- Restart your application + +**"Vault not found"** +- Create vault first with `$acta create vault` +- Check you're using correct wallet address + +**"Issuer not authorized"** +- Authorize issuer with `$acta authorize issuer GXXXXX` +- Confirm authorization completed + +**"Insufficient balance"** +- Fund testnet wallet: https://laboratory.stellar.org/#account-creator?network=test +- Mainnet: Add real XLM + +## 10. Next Steps + +- Read `SKILL.md` for complete workflow +- Explore `references/` for detailed documentation +- Try example React components in `assets/examples/` +- Join Discord: https://discord.gg/DsUSE3aMDZ + +## Resources + +- **Website:** https://acta.build +- **Documentation:** https://docs.acta.build +- **dApp:** https://dapp.acta.build +- **GitHub:** https://github.com/ACTA-Team +- **Discord:** https://discord.gg/DsUSE3aMDZ + +--- + +**Need help?** Ask in the skill: + +``` +$acta I'm stuck with [your issue] +``` + +The skill will guide you through troubleshooting! diff --git a/.agents/skills/acta/README.md b/.agents/skills/acta/README.md new file mode 100644 index 0000000..37e2d1a --- /dev/null +++ b/.agents/skills/acta/README.md @@ -0,0 +1,70 @@ +# acta.build Verifiable Credentials Skill + +Guide developers through integrating acta.build's W3C Verifiable Credentials 2.0 infrastructure on Stellar blockchain. + +## Installation + +Install this skill using the Claude Code CLI: + +```bash +npx skills add wlademyr/acta-skill +``` + +Or clone and use locally: + +```bash +git clone https://github.com/wlademyr/acta-skill +cd acta-skill +npx skills add . +``` + +## Usage + +Invoke the skill with: + +``` +$acta help me issue a credential +$acta verify this credential +$acta set up a vault +``` + +Or implicitly by mentioning verifiable credentials or acta.build in your query. + +## Prerequisites + +- Node.js 18+ +- React 16.8+ (for React SDK integration) +- Freighter wallet (for testnet operations) +- API key from https://dapp.acta.build + +## Features + +- ✅ **Credential Issuance** - Issue W3C VC 2.0 credentials on Stellar +- ✅ **Credential Verification** - Verify credential authenticity and validity +- 🔐 **Vault Management** - Create and manage encrypted credential vaults +- 🛡️ **Security Guardrails** - Mandatory confirmations and best practices +- 📝 **Code Examples** - Working React SDK integration examples +- 🧪 **Helper Scripts** - API testing and credential validation tools + +## Documentation + +See `SKILL.md` for the complete workflow and safety rules. + +Reference documentation in `references/`: +- `platform-overview.md` - acta.build architecture +- `react-sdk-reference.md` - Complete SDK documentation +- `credential-lifecycle.md` - Issue, verify, revoke workflows +- `vault-management.md` - Vault setup and operations +- `security-best-practices.md` - Key management and safety + +## License + +MIT License - see LICENSE file for details. + +## Links + +- acta.build: https://acta.build +- Documentation: https://docs.acta.build +- Live dApp: https://dapp.acta.build +- GitHub: https://github.com/ACTA-Team +- Discord: https://discord.gg/DsUSE3aMDZ diff --git a/.agents/skills/acta/SKILL.md b/.agents/skills/acta/SKILL.md new file mode 100644 index 0000000..a1ce098 --- /dev/null +++ b/.agents/skills/acta/SKILL.md @@ -0,0 +1,361 @@ +--- +name: acta +description: Guide developers through integrating acta.build's verifiable credentials infrastructure on Stellar blockchain. Focus on credential issuance and verification workflows using React SDK hooks (useCredential, useVault, useVaultRead) or REST API. Ensures security with mandatory confirmations for credential operations, key management best practices, and non-custodial vault setup. Use when working with W3C Verifiable Credentials 2.0, Stellar blockchain credentials, decentralized identity (DIDs), credential verification, or vault storage. +license: MIT +compatibility: Requires internet access for API calls. React SDK requires React 16.8+, Freighter wallet for testnet. Node.js 18+ for scripts. +metadata: + author: acta-build + version: "1.0.0" + platform: stellar + standards: W3C-VC-2.0 +--- + +## CRITICAL SAFETY RULES + +### Before Any Credential Operation: + +1. **ALWAYS confirm the user controls the private keys** + - acta.build is non-custodial - users must sign with their own wallet + - Freighter wallet required for testnet operations + - NEVER ask users to share private keys or seed phrases + +2. **NEVER expose sensitive data in code** + - API keys go in `.env.local` (add to `.gitignore`) + - Use `ACTA_API_KEY_TESTNET` environment variable + - No hardcoded keys in source files + - No keys committed to version control + +3. **ALWAYS verify credential immutability understanding** + - Credentials on Stellar blockchain are permanent + - Cannot be edited after issuance + - Revocation is separate from deletion + - Get explicit confirmation before issuing + +4. **ALWAYS use testnet first** + - Default to `ACTA_API_KEY_TESTNET` for development + - Only use mainnet with explicit user confirmation + - Freighter must be configured for testnet mode + +### Mandatory Confirmations: + +**Before Credential Issuance:** +``` +⚠️ CREDENTIAL ISSUANCE CONFIRMATION + +You are about to issue a verifiable credential that will be: +- Permanently recorded on Stellar blockchain +- Publicly verifiable by anyone +- Immutable once created +- Stored in the user's vault + +Credential Type: [type] +Owner: [wallet address] +Issuer DID: [issuer DID] + +Environment: [TESTNET/MAINNET] + +Do you want to proceed? (yes/no) +``` + +**Before Credential Revocation:** +``` +⚠️ CREDENTIAL REVOCATION CONFIRMATION + +WARNING: This action affects credential validity. + +Credential ID: [vcId] +Owner: [wallet address] +Action: Revoke issuer authorization + +This will: +- Mark issuer as unauthorized for this vault +- Affect all credentials from this issuer +- Require blockchain transaction + +Type 'revoke' to confirm: _____ +``` + +**Before Vault Creation:** +``` +ℹ️ VAULT INITIALIZATION + +Creating a new credential vault: +- Owner: [wallet address] +- Owner DID: [DID] +- Network: [TESTNET/MAINNET] + +The vault will: +- Store encrypted credentials on-chain +- Require wallet signature for operations +- Use Stellar/Soroban smart contracts + +Proceed? (yes/no) +``` + +--- + +## 5-STEP CREDENTIAL INTEGRATION WORKFLOW + +### Step 1: Environment Setup +**Goal:** Configure API access and wallet connection + +**Actions:** +1. Obtain API key from https://dapp.acta.build +2. Create `.env.local` in project root: + ``` + ACTA_API_KEY_TESTNET=your_api_key_here + ``` +3. Add `.env.local` to `.gitignore` +4. Install Freighter wallet browser extension +5. Configure Freighter for testnet mode +6. Verify setup with `scripts/test-api-connection.js` + +**SDK Setup (React):** +```tsx +import { ActaProvider } from '@acta-team/acta-sdk'; + +function App() { + return ( + + {/* Your app */} + + ); +} +``` + +**Reference:** See `references/react-sdk-reference.md` for complete setup + +--- + +### Step 2: Vault Initialization +**Goal:** Create user-controlled credential vault + +**When:** First-time setup for each user + +**React SDK:** +```tsx +import { useVault } from '@acta-team/acta-sdk'; + +const { createVault } = useVault(); + +await createVault({ + owner: walletAddress, + ownerDid: 'did:pkh:stellar:testnet:' + walletAddress, + signTransaction: freighterSignTransaction +}); +``` + +**Safety Checks:** +- [ ] Confirm user controls the wallet address +- [ ] Verify Freighter is connected and unlocked +- [ ] Check network is testnet (for development) +- [ ] User understands vault is permanent + +**Reference:** See `references/vault-management.md` for details + +--- + +### Step 3: Credential Issuance +**Goal:** Issue W3C Verifiable Credential and store in vault + +**When:** User has earned/received a credential + +**React SDK:** +```tsx +import { useCredential } from '@acta-team/acta-sdk'; + +const { issue } = useCredential(); + +await issue({ + owner: walletAddress, + vcId: 'vc:education:degree:' + uniqueId, + vcData: JSON.stringify({ + '@context': ['https://www.w3.org/2018/credentials/v1'], + type: ['VerifiableCredential', 'EducationCredential'], + credentialSubject: { + id: 'did:pkh:stellar:testnet:' + walletAddress, + degree: 'Bachelor of Science', + major: 'Computer Science', + university: 'Example University', + graduationDate: '2024-05-15' + } + }), + issuer: issuerWalletAddress, + issuerDid: 'did:pkh:stellar:testnet:' + issuerWalletAddress, + signTransaction: freighterSignTransaction +}); +``` + +**Mandatory Confirmation:** Show credential details and get explicit approval + +**Safety Checks:** +- [ ] Validate vcData against W3C VC 2.0 schema +- [ ] Confirm vcId is unique +- [ ] Verify issuer has authority to issue this credential type +- [ ] User approves credential content +- [ ] Testnet confirmed for development + +**Reference:** See `references/credential-lifecycle.md` for complete workflows + +--- + +### Step 4: Credential Verification +**Goal:** Verify credential authenticity and validity + +**When:** Receiving credential from another user + +**React SDK:** +```tsx +import { useVaultRead } from '@acta-team/acta-sdk'; + +const { verifyVc } = useVaultRead(); + +const verification = await verifyVc({ + owner: credentialHolderAddress, + vcId: 'vc:education:degree:12345' +}); + +// Check verification result +if (verification.isValid) { + console.log('Credential is valid'); + // Parse vcData to access credential claims + const credential = JSON.parse(verification.vcData); +} +``` + +**Verification Checks:** +- [ ] Credential exists in vault +- [ ] Issuer is authorized for the vault +- [ ] Credential has not been revoked +- [ ] Signature is cryptographically valid +- [ ] Schema matches expected format + +**Reference:** See `references/credential-lifecycle.md` section on verification + +--- + +### Step 5: Issuer Authorization Management +**Goal:** Control which issuers can add credentials to vault + +**When:** Setting up trusted issuers or revoking access + +**Authorize Issuer:** +```tsx +const { authorizeIssuer } = useVault(); + +await authorizeIssuer({ + owner: walletAddress, + issuer: trustedIssuerAddress, + signTransaction: freighterSignTransaction +}); +``` + +**Revoke Issuer:** +```tsx +const { revokeIssuer } = useVault(); + +await revokeIssuer({ + owner: walletAddress, + issuer: untrustedIssuerAddress, + signTransaction: freighterSignTransaction +}); +``` + +**Safety Checks:** +- [ ] Verify issuer address is correct +- [ ] Confirm user understands authorization implications +- [ ] For revocation: confirm all credentials from issuer will be affected +- [ ] Document reason for authorization/revocation + +**Reference:** See `references/vault-management.md` for authorization patterns + +--- + +## REQUIRED INFORMATION CHECKLIST + +Before providing integration guidance, collect: + +### Project Context +- [ ] **Application type:** React/Next.js, Node.js backend, mobile app, other? +- [ ] **Primary use case:** Education credentials, employment verification, KYC, custom? +- [ ] **Development stage:** Proof of concept, MVP, production? + +### Technical Setup +- [ ] **API key obtained:** From https://dapp.acta.build? +- [ ] **Wallet setup:** Freighter installed and configured for testnet? +- [ ] **Environment:** Testnet (development) or mainnet (production)? + +### Credential Details +- [ ] **Credential type:** Education, employment, identity, other? +- [ ] **Issuer authority:** Who has the right to issue these credentials? +- [ ] **Schema requirements:** Use standard template or custom structure? + +### Security Understanding +- [ ] **Key custody:** User understands they control private keys? +- [ ] **Immutability:** User understands credentials are permanent? +- [ ] **Privacy:** Any sensitive data that needs protection? + +**If information is missing, ASK before proceeding with code generation.** + +--- + +## WHEN TO CONSULT REFERENCES + +Load reference documentation progressively based on context: + +### For All Integrations: +- `references/platform-overview.md` - First-time users need context on acta.build architecture + +### For React Integration: +- `references/react-sdk-reference.md` - Complete hook documentation and TypeScript types + +### For Credential Operations: +- `references/credential-lifecycle.md` - Detailed workflows for issue, verify, revoke + +### For Vault Setup: +- `references/vault-management.md` - Vault creation, authorization, queries + +### For Security Questions: +- `references/security-best-practices.md` - Key management, API security, threat models + +### For Advanced Features: +- `references/zero-knowledge-proofs.md` - ZKP workflows (future expansion) + +**Don't load all references upfront** - load only what's needed for the current task. + +--- + +## HOW TO RESPOND + +### 1. Gather Context +- Ask clarifying questions from the checklist +- Understand user's current setup and goal + +### 2. Provide Structured Guidance +- Reference the 5-step workflow +- Show specific code examples +- Include safety checks + +### 3. Safety-First Approach +- Always mention required confirmations +- Highlight security implications +- Remind about testnet-first development + +### 4. Verify Understanding +- Ask user to confirm critical details +- Check API key is configured correctly +- Ensure wallet is connected + +### 5. Next Steps +- Provide clear next action +- Reference relevant documentation +- Offer to help with testing + +**Example Response:** +> I'll help you issue an education credential. First, let me verify your setup: +> +> 1. Do you have `ACTA_API_KEY_TESTNET` in your `.env.local`? +> 2. Is Freighter wallet installed and set to testnet mode? +> 3. Have you created a vault for the credential holder? +> +> Once confirmed, I'll show you the issuance code with the education template. diff --git a/.agents/skills/acta/agents/openai.yaml b/.agents/skills/acta/agents/openai.yaml new file mode 100644 index 0000000..f2619bd --- /dev/null +++ b/.agents/skills/acta/agents/openai.yaml @@ -0,0 +1,9 @@ +# UI metadata and invocation policy for acta.build skill +interface: + display_name: "acta.build Credentials" + short_description: "Issue and verify credentials on Stellar" + default_prompt: "Help me integrate verifiable credentials with acta.build, focusing on issuance and verification workflows" + +policy: + # Allow implicit invocation when user mentions credentials + allow_implicit_invocation: true diff --git a/.agents/skills/acta/assets/credential-templates/education.json b/.agents/skills/acta/assets/credential-templates/education.json new file mode 100644 index 0000000..4ebf859 --- /dev/null +++ b/.agents/skills/acta/assets/credential-templates/education.json @@ -0,0 +1,14 @@ +{ + "@context": [ + "https://www.w3.org/2018/credentials/v1" + ], + "type": ["VerifiableCredential", "EducationCredential"], + "credentialSubject": { + "id": "did:pkh:stellar:testnet:GXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "degree": "Bachelor of Science", + "major": "Computer Science", + "university": "Example University", + "graduationDate": "2024-05-15", + "gpa": "3.8" + } +} diff --git a/.agents/skills/acta/assets/credential-templates/employment.json b/.agents/skills/acta/assets/credential-templates/employment.json new file mode 100644 index 0000000..9737aa0 --- /dev/null +++ b/.agents/skills/acta/assets/credential-templates/employment.json @@ -0,0 +1,14 @@ +{ + "@context": [ + "https://www.w3.org/2018/credentials/v1" + ], + "type": ["VerifiableCredential", "EmploymentCredential"], + "credentialSubject": { + "id": "did:pkh:stellar:testnet:GXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "jobTitle": "Senior Software Engineer", + "employer": "Acme Corporation", + "startDate": "2020-06-01", + "endDate": "2024-03-15", + "skills": ["JavaScript", "React", "Node.js", "TypeScript", "Stellar"] + } +} diff --git a/.agents/skills/acta/assets/credential-templates/identity.json b/.agents/skills/acta/assets/credential-templates/identity.json new file mode 100644 index 0000000..1dab486 --- /dev/null +++ b/.agents/skills/acta/assets/credential-templates/identity.json @@ -0,0 +1,14 @@ +{ + "@context": [ + "https://www.w3.org/2018/credentials/v1" + ], + "type": ["VerifiableCredential", "IdentityCredential"], + "credentialSubject": { + "id": "did:pkh:stellar:testnet:GXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "fullName": "Jane Doe", + "dateOfBirth": "1990-01-15", + "country": "United States", + "verified": true, + "kycLevel": "level-2" + } +} diff --git a/.agents/skills/acta/assets/examples/react-issue-credential.tsx b/.agents/skills/acta/assets/examples/react-issue-credential.tsx new file mode 100644 index 0000000..60195d2 --- /dev/null +++ b/.agents/skills/acta/assets/examples/react-issue-credential.tsx @@ -0,0 +1,278 @@ +import { useCredential } from '@acta-team/acta-sdk'; +import freighter from '@stellar/freighter-api'; +import { useState } from 'react'; + +/** + * Example component for issuing verifiable credentials + * + * This component demonstrates: + * - Creating a W3C VC 2.0 compliant credential + * - Generating unique credential IDs + * - Using the useCredential hook + * - Handling Freighter wallet signing + * - Error handling and user feedback + */ +export function IssueCredential() { + const { issue } = useCredential(); + const [status, setStatus] = useState(''); + const [isLoading, setIsLoading] = useState(false); + const [issuedVcId, setIssuedVcId] = useState(null); + + const handleIssue = async () => { + try { + setIsLoading(true); + setStatus('Connecting to Freighter wallet...'); + + // Get wallet address from Freighter + const walletAddress = await freighter.getPublicKey(); + + setStatus('Preparing credential...'); + + // Generate unique credential ID + const timestamp = Date.now(); + const randomId = Math.random().toString(36).substring(7); + const uniqueId = `${timestamp}-${randomId}`; + const vcId = `vc:education:degree:${uniqueId}`; + + // Create W3C VC 2.0 compliant credential + const credential = { + '@context': ['https://www.w3.org/2018/credentials/v1'], + type: ['VerifiableCredential', 'EducationCredential'], + credentialSubject: { + id: `did:pkh:stellar:testnet:${walletAddress}`, + degree: 'Bachelor of Science', + major: 'Computer Science', + university: 'Example University', + graduationDate: '2024-05-15', + gpa: '3.8' + } + }; + + setStatus('Requesting signature from Freighter...'); + + // Issue credential (will prompt Freighter for signature) + await issue({ + owner: walletAddress, + vcId: vcId, + vcData: JSON.stringify(credential), + issuer: walletAddress, // Self-issued credential + issuerDid: `did:pkh:stellar:testnet:${walletAddress}`, + signTransaction: freighter.signTransaction + }); + + setIssuedVcId(vcId); + setStatus(`✅ Credential issued successfully!`); + } catch (error: any) { + if (error.message?.includes('User declined')) { + setStatus('❌ Transaction cancelled by user'); + } else if (error.message?.includes('Vault')) { + setStatus('❌ Vault not found. Create a vault first.'); + } else if (error.message?.includes('authorized')) { + setStatus('❌ Issuer not authorized for this vault'); + } else { + setStatus(`❌ Error: ${error.message}`); + } + } finally { + setIsLoading(false); + } + }; + + return ( +
+

Issue Education Credential

+ +
+

+ This will issue a Bachelor's degree credential to your vault. +

+

+ ⚠️ Credentials are permanent and cannot be deleted. +

+
+ + + + {status && ( +
+ {status} +
+ )} + + {issuedVcId && ( +
+

Credential ID:

+

{issuedVcId}

+

+ Save this ID to verify the credential later. +

+
+ )} +
+ ); +} + +/** + * Advanced example with custom credential data + */ +export function IssueCustomCredential() { + const { issue } = useCredential(); + const [formData, setFormData] = useState({ + degree: 'Bachelor of Science', + major: 'Computer Science', + university: '', + graduationDate: '', + gpa: '' + }); + const [status, setStatus] = useState(''); + const [isLoading, setIsLoading] = useState(false); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + + try { + setIsLoading(true); + setStatus('Preparing credential...'); + + const walletAddress = await freighter.getPublicKey(); + const vcId = `vc:education:degree:${Date.now()}-${Math.random().toString(36).substring(7)}`; + + const credential = { + '@context': ['https://www.w3.org/2018/credentials/v1'], + type: ['VerifiableCredential', 'EducationCredential'], + credentialSubject: { + id: `did:pkh:stellar:testnet:${walletAddress}`, + degree: formData.degree, + major: formData.major, + university: formData.university, + graduationDate: formData.graduationDate, + ...(formData.gpa && { gpa: formData.gpa }) + } + }; + + setStatus('Requesting signature...'); + + await issue({ + owner: walletAddress, + vcId: vcId, + vcData: JSON.stringify(credential), + issuer: walletAddress, + issuerDid: `did:pkh:stellar:testnet:${walletAddress}`, + signTransaction: freighter.signTransaction + }); + + setStatus(`✅ Credential issued! ID: ${vcId}`); + + // Reset form + setFormData({ + degree: 'Bachelor of Science', + major: 'Computer Science', + university: '', + graduationDate: '', + gpa: '' + }); + } catch (error: any) { + setStatus(`❌ Error: ${error.message}`); + } finally { + setIsLoading(false); + } + }; + + return ( +
+

Issue Custom Credential

+ +
+
+ + setFormData({ ...formData, degree: e.target.value })} + className="w-full px-3 py-2 border rounded" + required + /> +
+ +
+ + setFormData({ ...formData, major: e.target.value })} + className="w-full px-3 py-2 border rounded" + required + /> +
+ +
+ + setFormData({ ...formData, university: e.target.value })} + className="w-full px-3 py-2 border rounded" + required + /> +
+ +
+ + setFormData({ ...formData, graduationDate: e.target.value })} + className="w-full px-3 py-2 border rounded" + required + /> +
+ +
+ + setFormData({ ...formData, gpa: e.target.value })} + className="w-full px-3 py-2 border rounded" + placeholder="e.g., 3.8" + /> +
+ + +
+ + {status && ( +
+ {status} +
+ )} +
+ ); +} diff --git a/.agents/skills/acta/assets/examples/react-verify-credential.tsx b/.agents/skills/acta/assets/examples/react-verify-credential.tsx new file mode 100644 index 0000000..f437e39 --- /dev/null +++ b/.agents/skills/acta/assets/examples/react-verify-credential.tsx @@ -0,0 +1,419 @@ +import { useVaultRead } from '@acta-team/acta-sdk'; +import freighter from '@stellar/freighter-api'; +import { useState } from 'react'; + +/** + * Example component for verifying verifiable credentials + * + * This component demonstrates: + * - Using the useVaultRead hook + * - Verifying credential validity + * - Parsing and displaying credential data + * - Error handling for invalid credentials + * - No wallet signature required (read-only operation) + */ +export function VerifyCredential() { + const { verifyVc } = useVaultRead(); + const [vcId, setVcId] = useState(''); + const [ownerAddress, setOwnerAddress] = useState(''); + const [result, setResult] = useState(null); + const [isLoading, setIsLoading] = useState(false); + + const handleVerify = async () => { + try { + setIsLoading(true); + setResult(null); + + // If no owner address provided, use current wallet + let owner = ownerAddress; + if (!owner) { + owner = await freighter.getPublicKey(); + } + + // Verify credential (no signature required - read-only) + const verification = await verifyVc({ + owner: owner, + vcId: vcId + }); + + if (verification.isValid) { + // Parse credential data + const credential = JSON.parse(verification.vcData); + + setResult({ + valid: true, + credential: credential, + owner: owner + }); + } else { + setResult({ + valid: false, + error: 'Credential is not valid or does not exist', + possibleReasons: [ + 'Credential ID is incorrect', + 'Credential does not exist in this vault', + 'Issuer has been revoked', + 'Owner address is incorrect' + ] + }); + } + } catch (error: any) { + setResult({ + valid: false, + error: error.message || 'Verification failed', + possibleReasons: [ + 'Network connection issue', + 'Invalid wallet address format', + 'API key not configured' + ] + }); + } finally { + setIsLoading(false); + } + }; + + const handleUseCurrentWallet = async () => { + try { + const address = await freighter.getPublicKey(); + setOwnerAddress(address); + } catch (error) { + alert('Please install and connect Freighter wallet'); + } + }; + + return ( +
+

Verify Credential

+ +
+
+ + setVcId(e.target.value)} + placeholder="vc:education:degree:12345" + className="w-full px-3 py-2 border rounded font-mono text-sm" + /> +
+ +
+ +
+ setOwnerAddress(e.target.value)} + placeholder="GXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + className="flex-1 px-3 py-2 border rounded font-mono text-sm" + /> + +
+

+ Leave empty to use your connected wallet address +

+
+
+ + + + {result && ( +
+ {result.valid ? ( +
+
+ +

+ Valid Credential +

+
+ +
+

Credential Details:

+
+                  {JSON.stringify(result.credential, null, 2)}
+                
+
+ +
+

Owner: {result.owner}

+

Type: {result.credential.type?.join(', ')}

+

Subject ID: {result.credential.credentialSubject?.id}

+
+ + {/* Display credential-specific fields */} + {result.credential.type?.includes('EducationCredential') && ( +
+

Education Details:

+
    + {result.credential.credentialSubject.degree && ( +
  • Degree: {result.credential.credentialSubject.degree}
  • + )} + {result.credential.credentialSubject.major && ( +
  • Major: {result.credential.credentialSubject.major}
  • + )} + {result.credential.credentialSubject.university && ( +
  • University: {result.credential.credentialSubject.university}
  • + )} + {result.credential.credentialSubject.graduationDate && ( +
  • Graduation: {result.credential.credentialSubject.graduationDate}
  • + )} + {result.credential.credentialSubject.gpa && ( +
  • GPA: {result.credential.credentialSubject.gpa}
  • + )} +
+
+ )} + + {result.credential.type?.includes('EmploymentCredential') && ( +
+

Employment Details:

+
    + {result.credential.credentialSubject.jobTitle && ( +
  • Job Title: {result.credential.credentialSubject.jobTitle}
  • + )} + {result.credential.credentialSubject.employer && ( +
  • Employer: {result.credential.credentialSubject.employer}
  • + )} + {result.credential.credentialSubject.startDate && ( +
  • Start Date: {result.credential.credentialSubject.startDate}
  • + )} + {result.credential.credentialSubject.endDate && ( +
  • End Date: {result.credential.credentialSubject.endDate}
  • + )} +
+
+ )} +
+ ) : ( +
+
+ +

+ Invalid Credential +

+
+ +
+

{result.error}

+
+ + {result.possibleReasons && ( +
+

Possible Reasons:

+
    + {result.possibleReasons.map((reason: string, index: number) => ( +
  • {reason}
  • + ))} +
+
+ )} +
+ )} +
+ )} +
+ ); +} + +/** + * Simplified verification component + */ +export function QuickVerify() { + const { verifyVc } = useVaultRead(); + const [vcId, setVcId] = useState(''); + const [isValid, setIsValid] = useState(null); + const [isLoading, setIsLoading] = useState(false); + + const handleQuickVerify = async () => { + try { + setIsLoading(true); + setIsValid(null); + + const owner = await freighter.getPublicKey(); + const verification = await verifyVc({ owner, vcId }); + + setIsValid(verification.isValid); + } catch (error) { + setIsValid(false); + } finally { + setIsLoading(false); + } + }; + + return ( +
+

Quick Verify

+ +
+ setVcId(e.target.value)} + placeholder="Enter credential ID" + className="flex-1 px-3 py-2 border rounded text-sm" + /> + +
+ + {isValid !== null && ( +
+ {isValid ? '✅ Valid' : '❌ Invalid'} +
+ )} +
+ ); +} + +/** + * Batch verification component + */ +export function BatchVerify() { + const { verifyVc } = useVaultRead(); + const [vcIds, setVcIds] = useState(['']); + const [results, setResults] = useState([]); + const [isLoading, setIsLoading] = useState(false); + + const addCredentialField = () => { + setVcIds([...vcIds, '']); + }; + + const updateVcId = (index: number, value: string) => { + const updated = [...vcIds]; + updated[index] = value; + setVcIds(updated); + }; + + const handleBatchVerify = async () => { + try { + setIsLoading(true); + setResults([]); + + const owner = await freighter.getPublicKey(); + + // Verify all credentials + const verifications = await Promise.all( + vcIds + .filter(id => id.trim()) + .map(async (vcId) => { + try { + const verification = await verifyVc({ owner, vcId }); + return { + vcId, + isValid: verification.isValid, + credential: verification.isValid ? JSON.parse(verification.vcData) : null + }; + } catch (error) { + return { + vcId, + isValid: false, + error: 'Verification failed' + }; + } + }) + ); + + setResults(verifications); + } catch (error) { + alert('Batch verification failed'); + } finally { + setIsLoading(false); + } + }; + + return ( +
+

Batch Verify Credentials

+ +
+ {vcIds.map((vcId, index) => ( + updateVcId(index, e.target.value)} + placeholder={`Credential ID ${index + 1}`} + className="w-full px-3 py-2 border rounded font-mono text-sm" + /> + ))} + +
+ + + + {results.length > 0 && ( +
+

Results:

+ {results.map((result, index) => ( +
+
+ {result.vcId} + + {result.isValid ? '✅ Valid' : '❌ Invalid'} + +
+ {result.credential && ( +

+ {result.credential.type?.filter((t: string) => t !== 'VerifiableCredential').join(', ')} +

+ )} +
+ ))} +
+ )} +
+ ); +} diff --git a/.agents/skills/acta/assets/examples/vault-setup.tsx b/.agents/skills/acta/assets/examples/vault-setup.tsx new file mode 100644 index 0000000..1aafa5f --- /dev/null +++ b/.agents/skills/acta/assets/examples/vault-setup.tsx @@ -0,0 +1,491 @@ +import { useVault } from '@acta-team/acta-sdk'; +import freighter from '@stellar/freighter-api'; +import { useState } from 'react'; + +/** + * Example component for vault setup and management + * + * This component demonstrates: + * - Creating a new credential vault + * - Authorizing issuers + * - Revoking issuer authorization + * - Managing vault permissions + * - Error handling for vault operations + */ +export function VaultSetup() { + const { createVault, authorizeIssuer, revokeIssuer } = useVault(); + const [status, setStatus] = useState(''); + const [isLoading, setIsLoading] = useState(false); + const [walletAddress, setWalletAddress] = useState(null); + + // Create vault + const handleCreateVault = async () => { + try { + setIsLoading(true); + setStatus('Connecting to Freighter wallet...'); + + // Get wallet address + const address = await freighter.getPublicKey(); + setWalletAddress(address); + + setStatus('Creating vault...'); + + // Create owner DID + const ownerDid = `did:pkh:stellar:testnet:${address}`; + + // Create vault (requires wallet signature) + await createVault({ + owner: address, + ownerDid: ownerDid, + signTransaction: freighter.signTransaction + }); + + setStatus('✅ Vault created successfully!'); + } catch (error: any) { + if (error.message?.includes('already exists')) { + setStatus('ℹ️ Vault already exists for this wallet'); + } else if (error.message?.includes('User declined')) { + setStatus('❌ Transaction cancelled by user'); + } else if (error.message?.includes('balance')) { + setStatus('❌ Insufficient balance. Fund your testnet wallet at https://laboratory.stellar.org/#account-creator?network=test'); + } else { + setStatus(`❌ Error: ${error.message}`); + } + } finally { + setIsLoading(false); + } + }; + + // Connect wallet to check status + const handleConnectWallet = async () => { + try { + const address = await freighter.getPublicKey(); + setWalletAddress(address); + setStatus(`Connected: ${address}`); + } catch (error) { + setStatus('❌ Please install Freighter wallet'); + } + }; + + return ( +
+

Vault Setup

+ +
+

What is a Vault?

+

+ A vault is your encrypted, on-chain storage for verifiable credentials. + Each wallet can have one vault that stores all your credentials permanently. +

+
+ + {!walletAddress && ( + + )} + + {walletAddress && ( +
+

Connected Wallet:

+

{walletAddress}

+
+ )} + + + + {status && ( +
+ {status} +
+ )} + +
+

⚠️ Important:

+
    +
  • Vaults are permanent and cannot be deleted
  • +
  • You can only create one vault per wallet
  • +
  • Requires a small amount of testnet XLM
  • +
+
+
+ ); +} + +/** + * Component for managing issuer authorizations + */ +export function IssuerManagement() { + const { authorizeIssuer, revokeIssuer } = useVault(); + const [issuerAddress, setIssuerAddress] = useState(''); + const [issuerName, setIssuerName] = useState(''); + const [status, setStatus] = useState(''); + const [isLoading, setIsLoading] = useState(false); + const [authorizedIssuers, setAuthorizedIssuers] = useState>([]); + + // Authorize issuer + const handleAuthorizeIssuer = async () => { + try { + setIsLoading(true); + setStatus('Requesting authorization...'); + + const walletAddress = await freighter.getPublicKey(); + + // Confirm with user + const confirmed = confirm(` +⚠️ ISSUER AUTHORIZATION + +You are about to authorize: +${issuerName || 'Unnamed issuer'} +${issuerAddress} + +This issuer will be able to: +- Issue credentials to your vault +- Add new verifiable credentials + +Proceed with authorization? + `); + + if (!confirmed) { + setStatus('Authorization cancelled'); + setIsLoading(false); + return; + } + + setStatus('Signing transaction...'); + + await authorizeIssuer({ + owner: walletAddress, + issuer: issuerAddress, + signTransaction: freighter.signTransaction + }); + + // Add to list + setAuthorizedIssuers([ + ...authorizedIssuers, + { name: issuerName || 'Unnamed', address: issuerAddress } + ]); + + setStatus(`✅ Issuer authorized successfully!`); + setIssuerAddress(''); + setIssuerName(''); + } catch (error: any) { + if (error.message?.includes('User declined')) { + setStatus('❌ Authorization cancelled'); + } else { + setStatus(`❌ Error: ${error.message}`); + } + } finally { + setIsLoading(false); + } + }; + + // Revoke issuer + const handleRevokeIssuer = async (address: string, name: string) => { + try { + setIsLoading(true); + + // Strong confirmation for revocation + const confirmText = prompt(` +⚠️ CRITICAL: ISSUER REVOCATION + +WARNING: This will affect credential validity! + +You are about to revoke authorization for: +${name} +${address} + +This will: +- Prevent future credentials from this issuer +- Mark ALL existing credentials from this issuer as INVALID +- Require a blockchain transaction + +This action is permanent and affects ALL credentials from this issuer. + +Type "REVOKE" to confirm: + `); + + if (confirmText !== 'REVOKE') { + setStatus('Revocation cancelled'); + setIsLoading(false); + return; + } + + setStatus('Revoking issuer...'); + + const walletAddress = await freighter.getPublicKey(); + + await revokeIssuer({ + owner: walletAddress, + issuer: address, + signTransaction: freighter.signTransaction + }); + + // Remove from list + setAuthorizedIssuers( + authorizedIssuers.filter(issuer => issuer.address !== address) + ); + + setStatus(`✅ Issuer revoked. All credentials from this issuer are now invalid.`); + } catch (error: any) { + setStatus(`❌ Error: ${error.message}`); + } finally { + setIsLoading(false); + } + }; + + return ( +
+

Issuer Management

+ + {/* Authorize new issuer */} +
+

Authorize New Issuer

+ +
+
+ + setIssuerName(e.target.value)} + placeholder="e.g., Example University" + className="w-full px-3 py-2 border rounded" + /> +
+ +
+ + setIssuerAddress(e.target.value)} + placeholder="GXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + className="w-full px-3 py-2 border rounded font-mono text-sm" + /> +
+ + +
+
+ + {status && ( +
+ {status} +
+ )} + + {/* Authorized issuers list */} +
+

Authorized Issuers

+ + {authorizedIssuers.length === 0 ? ( +

No issuers authorized yet

+ ) : ( +
+ {authorizedIssuers.map((issuer, index) => ( +
+
+

{issuer.name}

+

{issuer.address}

+
+ +
+ ))} +
+ )} +
+ +
+

+ ⚠️ Warning: Revoking an issuer will invalidate ALL credentials + issued by that issuer. This action is permanent and cannot be undone. +

+
+
+ ); +} + +/** + * Complete vault setup wizard + */ +export function VaultSetupWizard() { + const { createVault, authorizeIssuer } = useVault(); + const [step, setStep] = useState(1); + const [walletAddress, setWalletAddress] = useState(''); + const [vaultCreated, setVaultCreated] = useState(false); + const [status, setStatus] = useState(''); + + const handleStep1 = async () => { + try { + const address = await freighter.getPublicKey(); + setWalletAddress(address); + setStep(2); + } catch (error) { + setStatus('Please install Freighter wallet extension'); + } + }; + + const handleStep2 = async () => { + try { + setStatus('Creating vault...'); + + await createVault({ + owner: walletAddress, + ownerDid: `did:pkh:stellar:testnet:${walletAddress}`, + signTransaction: freighter.signTransaction + }); + + setVaultCreated(true); + setStep(3); + setStatus('Vault created successfully!'); + } catch (error: any) { + if (error.message?.includes('already exists')) { + setVaultCreated(true); + setStep(3); + setStatus('Vault already exists - proceeding to next step'); + } else { + setStatus(`Error: ${error.message}`); + } + } + }; + + return ( +
+

Vault Setup Wizard

+ + {/* Progress indicator */} +
+
= 1 ? 'text-blue-600 font-semibold' : 'text-gray-400'}`}> +
= 1 ? 'bg-blue-600 text-white' : 'bg-gray-300'}`}> + 1 +
+

Connect

+
+
+
= 2 ? 'text-blue-600 font-semibold' : 'text-gray-400'}`}> +
= 2 ? 'bg-blue-600 text-white' : 'bg-gray-300'}`}> + 2 +
+

Create Vault

+
+
+
= 3 ? 'text-blue-600 font-semibold' : 'text-gray-400'}`}> +
= 3 ? 'bg-blue-600 text-white' : 'bg-gray-300'}`}> + 3 +
+

Complete

+
+
+ + {/* Step content */} +
+ {step === 1 && ( +
+

Step 1: Connect Wallet

+

+ Connect your Freighter wallet to get started. Make sure you're on the testnet network. +

+ +
+ )} + + {step === 2 && ( +
+

Step 2: Create Vault

+

+ Create your credential vault. This will store all your verifiable credentials securely on-chain. +

+
+

Wallet:

+

{walletAddress}

+
+ +
+ )} + + {step === 3 && ( +
+

✅ Setup Complete!

+

+ Your vault is ready. You can now issue and receive verifiable credentials. +

+
+ + +
+
+ )} +
+ + {status && ( +
+ {status} +
+ )} +
+ ); +} diff --git a/.agents/skills/acta/package.json b/.agents/skills/acta/package.json new file mode 100644 index 0000000..afb26bb --- /dev/null +++ b/.agents/skills/acta/package.json @@ -0,0 +1,33 @@ +{ + "name": "acta-skill", + "version": "1.0.0", + "description": "Claude Code skill for integrating acta.build verifiable credentials on Stellar blockchain", + "type": "commonjs", + "scripts": { + "test:api": "node scripts/test-api-connection.js", + "validate": "node scripts/validate-credential.js", + "validate:education": "node scripts/validate-credential.js assets/credential-templates/education.json", + "validate:employment": "node scripts/validate-credential.js assets/credential-templates/employment.json", + "validate:identity": "node scripts/validate-credential.js assets/credential-templates/identity.json" + }, + "keywords": [ + "verifiable-credentials", + "w3c-vc", + "stellar", + "blockchain", + "acta-build", + "credentials", + "identity", + "did", + "claude-skill" + ], + "author": "acta-build", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/wlademyr/acta-skill" + }, + "engines": { + "node": ">=18.0.0" + } +} diff --git a/.agents/skills/acta/references/credential-lifecycle.md b/.agents/skills/acta/references/credential-lifecycle.md new file mode 100644 index 0000000..3b8233c --- /dev/null +++ b/.agents/skills/acta/references/credential-lifecycle.md @@ -0,0 +1,596 @@ +# Credential Lifecycle Reference + +Complete workflows for credential issuance, verification, and revocation. + +--- + +## Credential Issuance Workflow + +### Overview + +Issue W3C Verifiable Credentials 2.0 to a user's vault on Stellar blockchain. + +### Prerequisites + +- [ ] Vault exists for credential holder +- [ ] Issuer is authorized for the vault (if issuer ≠ owner) +- [ ] Freighter wallet installed and connected +- [ ] API key configured + +### Step-by-Step Process + +#### 1. Prepare Credential Data + +Create W3C VC 2.0 compliant credential JSON: + +```typescript +const credential = { + '@context': [ + 'https://www.w3.org/2018/credentials/v1' + ], + type: ['VerifiableCredential', 'EducationCredential'], + credentialSubject: { + id: 'did:pkh:stellar:testnet:GXXXXXXXXXXXXXXXXXXXXX', + degree: 'Bachelor of Science', + major: 'Computer Science', + university: 'Example University', + graduationDate: '2024-05-15', + gpa: '3.8' + } +}; +``` + +**Required Fields:** +- `@context` - Must include W3C VC context URL +- `type` - Must include `VerifiableCredential` +- `credentialSubject.id` - DID of credential holder + +**Optional Fields:** +- Additional types (e.g., `EducationCredential`) +- Custom properties in `credentialSubject` +- `issuer`, `issuanceDate`, `expirationDate` (handled by acta.build) + +#### 2. Generate Unique Credential ID + +Create a unique identifier for the credential: + +```typescript +// Format: vc::: +const uniqueId = `${Date.now()}-${Math.random().toString(36).substring(7)}`; +const vcId = `vc:education:degree:${uniqueId}`; +``` + +**Naming Conventions:** +- `vc:education:degree:*` - Education degrees +- `vc:education:certificate:*` - Certificates +- `vc:employment:verification:*` - Employment verification +- `vc:identity:kyc:*` - KYC credentials +- `vc:custom:*` - Custom credential types + +**⚠️ Important:** Credential IDs must be unique. Using duplicate IDs will fail. + +#### 3. Get Wallet Addresses + +```typescript +import freighter from '@stellar/freighter-api'; + +// Get credential holder's address +const holderAddress = await freighter.getPublicKey(); + +// Issuer address (may be same as holder for self-issued) +const issuerAddress = holderAddress; // Or different issuer + +// Create DIDs +const holderDid = `did:pkh:stellar:testnet:${holderAddress}`; +const issuerDid = `did:pkh:stellar:testnet:${issuerAddress}`; +``` + +#### 4. Issue Credential + +```typescript +import { useCredential } from '@acta-team/acta-sdk'; + +const { issue } = useCredential(); + +await issue({ + owner: holderAddress, + vcId: vcId, + vcData: JSON.stringify(credential), + issuer: issuerAddress, + issuerDid: issuerDid, + signTransaction: freighter.signTransaction +}); +``` + +#### 5. User Signs Transaction + +Freighter will prompt the user to: +- Review transaction details +- Approve the credential issuance +- Sign with their private key + +**What the user sees:** +``` +Freighter - Sign Transaction + +From: GXXXXXXXXXXXXXXXXXXX +Operation: Invoke Contract +Contract: Credential Vault +Function: issue_credential + +[Approve] [Reject] +``` + +#### 6. Confirmation + +Once signed and submitted: +- Transaction is broadcast to Stellar network +- Credential is stored in vault +- Issuer authorization is verified +- Credential becomes publicly verifiable + +**Success indicators:** +- No errors thrown +- Promise resolves successfully +- Credential can be verified immediately + +--- + +## Credential Verification Workflow + +### Overview + +Verify that a credential is valid, authentic, and issued by an authorized issuer. + +### Prerequisites + +- [ ] Credential ID (vcId) +- [ ] Vault owner address +- [ ] API key configured + +### Step-by-Step Process + +#### 1. Obtain Credential Information + +Get the credential ID and holder address: + +```typescript +// Received from credential holder +const vcId = 'vc:education:degree:1234567890'; +const holderAddress = 'GXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; +``` + +**Ways to receive credential information:** +- QR code scan +- Deep link +- Manual entry +- Shared via messaging +- Blockchain query + +#### 2. Call Verification API + +```typescript +import { useVaultRead } from '@acta-team/acta-sdk'; + +const { verifyVc } = useVaultRead(); + +const verification = await verifyVc({ + owner: holderAddress, + vcId: vcId +}); +``` + +**No wallet signature required for verification** - this is a read-only operation. + +#### 3. Check Validity + +```typescript +if (verification.isValid) { + console.log('✅ Credential is valid'); + + // Parse credential data + const credential = JSON.parse(verification.vcData); + + // Access credential fields + console.log('Degree:', credential.credentialSubject.degree); + console.log('University:', credential.credentialSubject.university); +} else { + console.log('❌ Credential is invalid or does not exist'); +} +``` + +#### 4. Validate Credential Structure + +Even if `isValid` is true, verify the credential matches expected format: + +```typescript +if (verification.isValid) { + const credential = JSON.parse(verification.vcData); + + // Check credential type + if (!credential.type.includes('EducationCredential')) { + throw new Error('Expected an education credential'); + } + + // Validate required fields + if (!credential.credentialSubject.degree) { + throw new Error('Missing degree field'); + } + + // Check issuer identity (if known) + const expectedIssuerDid = 'did:pkh:stellar:testnet:GISSUER...'; + // Additional validation logic +} +``` + +#### 5. Interpret Results + +**What `isValid: true` means:** +- ✅ Credential exists in the vault +- ✅ Issuer is currently authorized for this vault +- ✅ Cryptographic signatures are valid +- ✅ Credential has not been tampered with + +**What `isValid: false` means:** +- ❌ Credential doesn't exist, OR +- ❌ Issuer has been revoked, OR +- ❌ Credential signature is invalid + +**⚠️ Important:** `isValid` checks authorization status at verification time, not issuance time. If an issuer was revoked after issuance, the credential becomes invalid. + +--- + +## Issuer Authorization Workflow + +### Overview + +Vault owners control which issuers can add credentials to their vault. + +### Authorize Issuer + +#### When to Authorize +- Before an issuer can issue credentials to your vault +- When establishing trust with a new issuer +- When enrolling in a credential program + +#### Process + +```typescript +import { useVault } from '@acta-team/acta-sdk'; + +const { authorizeIssuer } = useVault(); + +// Example: University issuing degree credentials +const universityIssuerAddress = 'GUNIVERSITY...'; + +await authorizeIssuer({ + owner: await freighter.getPublicKey(), + issuer: universityIssuerAddress, + signTransaction: freighter.signTransaction +}); +``` + +#### Use Cases + +**Educational Institutions:** +```typescript +// Authorize university to issue degree credentials +await authorizeIssuer({ + owner: studentAddress, + issuer: universityAddress, + signTransaction: freighter.signTransaction +}); +``` + +**Employers:** +```typescript +// Authorize company to issue employment credentials +await authorizeIssuer({ + owner: employeeAddress, + issuer: companyAddress, + signTransaction: freighter.signTransaction +}); +``` + +**Self-Issuance:** +```typescript +// No authorization needed - owner is issuer +// Owner is automatically authorized for their own vault +``` + +--- + +### Revoke Issuer + +#### When to Revoke +- Issuer is no longer trusted +- Credentials from issuer should be invalidated +- Terminating relationship with credential provider +- Security breach or compromise + +#### Process + +```typescript +import { useVault } from '@acta-team/acta-sdk'; + +const { revokeIssuer } = useVault(); + +await revokeIssuer({ + owner: await freighter.getPublicKey(), + issuer: untrustedIssuerAddress, + signTransaction: freighter.signTransaction +}); +``` + +#### Effects of Revocation + +**Immediate effects:** +- Issuer can no longer issue new credentials +- All existing credentials from this issuer become invalid +- `verifyVc()` returns `isValid: false` for affected credentials + +**What is NOT affected:** +- Credentials are not deleted (blockchain is immutable) +- Credential data remains on-chain +- Other issuers' credentials are unaffected + +#### Example Scenarios + +**University degree revoked:** +```typescript +// University had accreditation issues +await revokeIssuer({ + owner: studentAddress, + issuer: universityAddress, + signTransaction: freighter.signTransaction +}); + +// Now all degrees from this university show as invalid +``` + +**Employment termination:** +```typescript +// After leaving company +await revokeIssuer({ + owner: employeeAddress, + issuer: formerEmployerAddress, + signTransaction: freighter.signTransaction +}); + +// Employment credentials no longer verify as valid +``` + +--- + +## Advanced Patterns + +### Multi-Issuer Credentials + +User has credentials from multiple issuers: + +```typescript +// Authorize multiple issuers +await authorizeIssuer({ owner, issuer: universityAddress, signTransaction }); +await authorizeIssuer({ owner, issuer: employerAddress, signTransaction }); +await authorizeIssuer({ owner, issuer: certificationBodyAddress, signTransaction }); + +// Each can issue credentials independently +// All credentials coexist in the same vault +``` + +### Credential Replacement + +To "update" a credential (which is immutable): + +1. Issue new credential with new ID +2. Application logic treats newer credential as authoritative +3. Optionally revoke old issuer if needed + +```typescript +// Issue updated credential +const newVcId = `vc:education:degree:${Date.now()}`; +await issue({ + owner, + vcId: newVcId, + vcData: JSON.stringify(updatedCredential), + issuer, + issuerDid, + signTransaction +}); + +// Application queries both credentials and uses newest +``` + +### Credential Expiration + +W3C VC 2.0 supports expiration dates: + +```typescript +const credential = { + '@context': ['https://www.w3.org/2018/credentials/v1'], + type: ['VerifiableCredential', 'CertificationCredential'], + expirationDate: '2025-12-31T23:59:59Z', + credentialSubject: { + id: holderDid, + certification: 'Professional License', + validUntil: '2025-12-31' + } +}; +``` + +**Verification with expiration:** +```typescript +const verification = await verifyVc({ owner, vcId }); + +if (verification.isValid) { + const credential = JSON.parse(verification.vcData); + const expirationDate = new Date(credential.expirationDate); + + if (expirationDate < new Date()) { + console.log('❌ Credential has expired'); + } else { + console.log('✅ Credential is valid and not expired'); + } +} +``` + +### Selective Disclosure (Future) + +Zero-knowledge proofs enable proving specific claims without revealing full credential: + +```typescript +// Future: Prove age > 21 without revealing exact birthdate +// See references/zero-knowledge-proofs.md when available +``` + +--- + +## Credential Templates + +Common credential structures for different use cases. + +### Education Degree +```json +{ + "@context": ["https://www.w3.org/2018/credentials/v1"], + "type": ["VerifiableCredential", "EducationCredential"], + "credentialSubject": { + "id": "did:pkh:stellar:testnet:GXXXXXX", + "degree": "Bachelor of Science", + "major": "Computer Science", + "university": "Example University", + "graduationDate": "2024-05-15", + "gpa": "3.8" + } +} +``` + +### Employment Verification +```json +{ + "@context": ["https://www.w3.org/2018/credentials/v1"], + "type": ["VerifiableCredential", "EmploymentCredential"], + "credentialSubject": { + "id": "did:pkh:stellar:testnet:GXXXXXX", + "jobTitle": "Senior Software Engineer", + "employer": "Acme Corporation", + "startDate": "2020-06-01", + "endDate": "2024-03-15", + "skills": ["JavaScript", "React", "Node.js"] + } +} +``` + +### Identity/KYC +```json +{ + "@context": ["https://www.w3.org/2018/credentials/v1"], + "type": ["VerifiableCredential", "IdentityCredential"], + "credentialSubject": { + "id": "did:pkh:stellar:testnet:GXXXXXX", + "fullName": "Jane Doe", + "dateOfBirth": "1990-01-15", + "country": "United States", + "verified": true, + "kycLevel": "level-2" + } +} +``` + +--- + +## Error Scenarios + +### Issuance Errors + +**Issuer Not Authorized:** +``` +Error: Issuer GXXXXX is not authorized for vault GYYYYYY +``` +**Solution:** Vault owner must call `authorizeIssuer()` first + +**Vault Doesn't Exist:** +``` +Error: Vault not found for owner GXXXXX +``` +**Solution:** Create vault with `createVault()` first + +**Duplicate Credential ID:** +``` +Error: Credential with ID vc:education:degree:123 already exists +``` +**Solution:** Generate new unique credential ID + +**Invalid Credential Format:** +``` +Error: vcData is not valid JSON +``` +**Solution:** Validate credential structure against W3C VC 2.0 schema + +### Verification Errors + +**Credential Not Found:** +``` +{ isValid: false } +``` +**Possible reasons:** +- Credential doesn't exist +- Wrong owner address +- Wrong credential ID + +**Issuer Revoked:** +``` +{ isValid: false } +``` +**Reason:** Issuer was revoked after credential was issued + +--- + +## Best Practices + +### Issuance +1. ✅ Always use testnet for development +2. ✅ Validate credential structure before issuing +3. ✅ Generate unique credential IDs +4. ✅ Confirm user approval before issuance +5. ✅ Handle Freighter rejection gracefully + +### Verification +1. ✅ Always check `isValid` flag first +2. ✅ Validate credential structure even if valid +3. ✅ Check expiration dates if present +4. ✅ Verify issuer identity matches expectations +5. ✅ Handle missing credentials gracefully + +### Authorization +1. ✅ Only authorize trusted issuers +2. ✅ Document reason for authorization +3. ✅ Review authorized issuers periodically +4. ✅ Revoke compromised issuers immediately +5. ✅ Understand revocation affects all credentials from issuer + +--- + +## Testing Checklist + +### Issuance Testing +- [ ] Issue credential to self (owner = issuer) +- [ ] Issue credential from different issuer (after authorization) +- [ ] Attempt issuance without authorization (should fail) +- [ ] Attempt duplicate credential ID (should fail) +- [ ] User rejects Freighter signature (should fail gracefully) +- [ ] Invalid credential format (should fail) + +### Verification Testing +- [ ] Verify valid credential (should return isValid: true) +- [ ] Verify non-existent credential (should return isValid: false) +- [ ] Verify credential after issuer revoked (should return isValid: false) +- [ ] Parse credential data correctly +- [ ] Handle verification errors gracefully + +### Authorization Testing +- [ ] Authorize new issuer successfully +- [ ] Authorize same issuer twice (should succeed/be idempotent) +- [ ] Revoke authorized issuer successfully +- [ ] Verify credentials invalid after revocation +- [ ] Re-authorize previously revoked issuer diff --git a/.agents/skills/acta/references/platform-overview.md b/.agents/skills/acta/references/platform-overview.md new file mode 100644 index 0000000..72127e9 --- /dev/null +++ b/.agents/skills/acta/references/platform-overview.md @@ -0,0 +1,255 @@ +# acta.build Platform Overview + +## What is acta.build? + +acta.build is a **Verifiable Credentials Infrastructure** built on the Stellar blockchain, providing W3C Verifiable Credentials 2.0 compliant credential issuance, storage, and verification. + +### Key Features + +- **W3C VC 2.0 Compliance** - Full support for W3C Verifiable Credentials 2.0 standard +- **Stellar/Soroban Integration** - On-chain credential storage using Soroban smart contracts +- **Non-Custodial Architecture** - Users control their private keys via wallet integration +- **Encrypted Vaults** - Secure on-chain storage for credentials +- **Decentralized Identifiers (DIDs)** - PKH-based DIDs for identity representation +- **Issuer Authorization** - Granular control over who can issue credentials + +--- + +## Architecture + +### Core Components + +1. **Credentials (VCs)** + - W3C Verifiable Credentials 2.0 format + - JSON-LD based data structure + - Cryptographically signed by issuers + - Stored permanently on Stellar blockchain + +2. **Vaults** + - User-owned encrypted storage containers + - One vault per wallet address + - Stored on Stellar/Soroban smart contracts + - Requires wallet signature for operations + +3. **DIDs (Decentralized Identifiers)** + - Format: `did:pkh:stellar:testnet:` + - PKH (Public Key Hash) method + - Network-specific (testnet vs mainnet) + - Represents credential subjects and issuers + +4. **Issuers** + - Entities authorized to issue credentials to vaults + - Identified by Stellar wallet address + - Must be explicitly authorized by vault owner + - Can be revoked at any time + +--- + +## Network Configuration + +### Testnet (Development) +- **Use for:** Development, testing, experimentation +- **Cost:** Free (testnet XLM has no value) +- **API Key:** `ACTA_API_KEY_TESTNET` +- **Freighter Mode:** Testnet +- **DID Format:** `did:pkh:stellar:testnet:
` + +### Mainnet (Production) +- **Use for:** Production deployments only +- **Cost:** Requires real XLM for transactions +- **API Key:** `ACTA_API_KEY_MAINNET` +- **Freighter Mode:** Mainnet +- **DID Format:** `did:pkh:stellar:mainnet:
` + +**⚠️ ALWAYS start with testnet for development!** + +--- + +## API Architecture + +### Configuration Endpoint + +The acta.build API provides automatic RPC URL discovery: + +``` +GET https://api.acta.build/config +Authorization: Bearer +``` + +**Response:** +```json +{ + "network": "testnet", + "rpcUrl": "https://soroban-testnet.stellar.org", + "contractAddress": "...", + "passphrase": "Test SDF Network ; September 2015" +} +``` + +**Why this matters:** The SDK automatically fetches RPC URLs, so you don't need to hardcode Stellar endpoints. + +--- + +## Credential Lifecycle + +### 1. Vault Creation +- User creates vault with their wallet address +- Vault is deployed as Soroban smart contract +- Owner DID is registered +- Vault is permanent once created + +### 2. Issuer Authorization +- Vault owner authorizes trusted issuers +- Issuer can now write credentials to vault +- Authorization can be revoked later + +### 3. Credential Issuance +- Issuer creates W3C VC 2.0 credential +- Credential is signed and stored in vault +- Blockchain transaction records issuance +- Credential is immutable once issued + +### 4. Credential Verification +- Verifier queries vault for credential +- Checks issuer authorization status +- Validates cryptographic signatures +- Returns credential data if valid + +### 5. Issuer Revocation +- Vault owner revokes issuer authorization +- All credentials from that issuer become invalid +- Does not delete credentials (immutable) +- Affects verification results + +--- + +## Security Model + +### Non-Custodial Architecture + +**Users control their private keys:** +- Private keys never leave the wallet (Freighter) +- acta.build cannot access user keys +- All transactions require user signature +- No custodial risk + +**API Keys are NOT private keys:** +- API keys are for acta.build service access +- They do NOT control user funds or credentials +- Separate from blockchain private keys + +### Trust Model + +**Vault Owner (User):** +- Full control over their vault +- Chooses which issuers to trust +- Can revoke issuer access +- Controls private keys via wallet + +**Issuer:** +- Authorized by vault owner +- Can issue credentials to authorized vaults +- Credentials are cryptographically signed +- Reputation-based trust + +**Verifier:** +- Reads credentials from vaults +- Checks issuer authorization +- Validates signatures +- No write access + +--- + +## Data Privacy + +### What's On-Chain +- Credential data (vcData JSON) +- Vault ownership +- Issuer authorizations +- Credential IDs + +### What's Encrypted +- Vault data is encrypted on-chain +- Only accessible via proper authorization + +### Privacy Considerations +- Credentials are readable by anyone who knows the vault address and credential ID +- Don't store sensitive personal data without encryption +- Consider zero-knowledge proofs for privacy-sensitive use cases +- Use selective disclosure patterns + +--- + +## Supported Standards + +### W3C Verifiable Credentials 2.0 + +**Required Fields:** +```json +{ + "@context": ["https://www.w3.org/2018/credentials/v1"], + "type": ["VerifiableCredential"], + "credentialSubject": { + "id": "did:pkh:stellar:testnet:..." + } +} +``` + +**Custom Credential Types:** +- Extend base `VerifiableCredential` type +- Add domain-specific types (e.g., `EducationCredential`) +- Include custom fields in `credentialSubject` + +--- + +## Integration Patterns + +### React SDK +- Hooks-based API (`useCredential`, `useVault`, `useVaultRead`) +- Automatic Freighter wallet integration +- TypeScript support +- React 16.8+ required + +### REST API +- Direct API calls for backend integrations +- Requires manual transaction signing +- Suitable for Node.js, Python, etc. +- See API documentation for endpoints + +--- + +## Use Cases + +### Education +- Diplomas and degrees +- Course completion certificates +- Skill certifications +- Academic transcripts + +### Employment +- Employment verification +- Job titles and roles +- Work history +- Reference letters + +### Identity +- KYC verification +- Age verification +- Citizenship proof +- Professional licenses + +### Custom +- Event attendance +- Membership credentials +- Achievement badges +- Custom verifications + +--- + +## Resources + +- **Website:** https://acta.build +- **Documentation:** https://docs.acta.build +- **Live dApp:** https://dapp.acta.build +- **GitHub:** https://github.com/ACTA-Team +- **Discord:** https://discord.gg/DsUSE3aMDZ diff --git a/.agents/skills/acta/references/react-sdk-reference.md b/.agents/skills/acta/references/react-sdk-reference.md new file mode 100644 index 0000000..2ba3431 --- /dev/null +++ b/.agents/skills/acta/references/react-sdk-reference.md @@ -0,0 +1,606 @@ +# React SDK Complete Reference + +## Installation + +```bash +npm install @acta-team/acta-sdk +``` + +## Provider Setup + +### ActaProvider + +Wrap your application with `ActaProvider` to enable SDK hooks. + +```tsx +import { ActaProvider } from '@acta-team/acta-sdk'; + +function App() { + return ( + + {/* Your app components */} + + ); +} + +export default App; +``` + +**Props:** +- `apiKey` (string, required) - Your acta.build API key from https://dapp.acta.build +- `children` (ReactNode, required) - Your application components + +**Environment Variables:** +```env +# .env.local +ACTA_API_KEY_TESTNET=your_testnet_api_key_here +ACTA_API_KEY_MAINNET=your_mainnet_api_key_here +``` + +**⚠️ IMPORTANT:** Always add `.env.local` to `.gitignore` + +--- + +## useCredential Hook + +Hook for credential issuance operations. + +### Import + +```tsx +import { useCredential } from '@acta-team/acta-sdk'; +``` + +### Usage + +```tsx +const { issue } = useCredential(); +``` + +### issue() Method + +Issue a new verifiable credential to a vault. + +**Function Signature:** +```tsx +async function issue(params: IssueCredentialParams): Promise +``` + +**Parameters:** +```typescript +interface IssueCredentialParams { + owner: string; // Wallet address of credential holder + vcId: string; // Unique credential ID (e.g., 'vc:education:degree:12345') + vcData: string; // JSON string of W3C VC 2.0 credential + issuer: string; // Wallet address of credential issuer + issuerDid: string; // DID of issuer (e.g., 'did:pkh:stellar:testnet:G...') + signTransaction: (xdr: string, options?: any) => Promise; // Freighter signing function +} +``` + +**Example:** +```tsx +import { useCredential } from '@acta-team/acta-sdk'; + +function IssueCredential() { + const { issue } = useCredential(); + + const handleIssue = async () => { + const walletAddress = await freighter.getPublicKey(); + const uniqueId = Date.now().toString(); + + const credential = { + '@context': ['https://www.w3.org/2018/credentials/v1'], + type: ['VerifiableCredential', 'EducationCredential'], + credentialSubject: { + id: `did:pkh:stellar:testnet:${walletAddress}`, + degree: 'Bachelor of Science', + university: 'Example University' + } + }; + + await issue({ + owner: walletAddress, + vcId: `vc:education:degree:${uniqueId}`, + vcData: JSON.stringify(credential), + issuer: walletAddress, + issuerDid: `did:pkh:stellar:testnet:${walletAddress}`, + signTransaction: freighter.signTransaction + }); + }; + + return ; +} +``` + +**Returns:** Promise that resolves when credential is issued + +**Throws:** Error if issuance fails + +--- + +## useVault Hook + +Hook for vault management operations. + +### Import + +```tsx +import { useVault } from '@acta-team/acta-sdk'; +``` + +### Usage + +```tsx +const { createVault, authorizeIssuer, revokeIssuer } = useVault(); +``` + +--- + +### createVault() Method + +Create a new credential vault for a user. + +**Function Signature:** +```tsx +async function createVault(params: CreateVaultParams): Promise +``` + +**Parameters:** +```typescript +interface CreateVaultParams { + owner: string; // Wallet address of vault owner + ownerDid: string; // DID of owner (e.g., 'did:pkh:stellar:testnet:G...') + signTransaction: (xdr: string, options?: any) => Promise; // Freighter signing function +} +``` + +**Example:** +```tsx +import { useVault } from '@acta-team/acta-sdk'; + +function CreateVault() { + const { createVault } = useVault(); + + const handleCreate = async () => { + const walletAddress = await freighter.getPublicKey(); + + await createVault({ + owner: walletAddress, + ownerDid: `did:pkh:stellar:testnet:${walletAddress}`, + signTransaction: freighter.signTransaction + }); + }; + + return ; +} +``` + +**Returns:** Promise that resolves when vault is created + +**Throws:** Error if vault creation fails or vault already exists + +**⚠️ Note:** Each wallet address can have only one vault. Creating a vault is permanent. + +--- + +### authorizeIssuer() Method + +Grant an issuer permission to add credentials to your vault. + +**Function Signature:** +```tsx +async function authorizeIssuer(params: AuthorizeIssuerParams): Promise +``` + +**Parameters:** +```typescript +interface AuthorizeIssuerParams { + owner: string; // Wallet address of vault owner + issuer: string; // Wallet address of issuer to authorize + signTransaction: (xdr: string, options?: any) => Promise; // Freighter signing function +} +``` + +**Example:** +```tsx +import { useVault } from '@acta-team/acta-sdk'; + +function AuthorizeIssuer() { + const { authorizeIssuer } = useVault(); + const [issuerAddress, setIssuerAddress] = useState(''); + + const handleAuthorize = async () => { + const walletAddress = await freighter.getPublicKey(); + + await authorizeIssuer({ + owner: walletAddress, + issuer: issuerAddress, + signTransaction: freighter.signTransaction + }); + }; + + return ( +
+ setIssuerAddress(e.target.value)} + placeholder="Issuer wallet address" + /> + +
+ ); +} +``` + +**Returns:** Promise that resolves when issuer is authorized + +**Throws:** Error if authorization fails + +--- + +### revokeIssuer() Method + +Revoke an issuer's permission to add credentials to your vault. + +**Function Signature:** +```tsx +async function revokeIssuer(params: RevokeIssuerParams): Promise +``` + +**Parameters:** +```typescript +interface RevokeIssuerParams { + owner: string; // Wallet address of vault owner + issuer: string; // Wallet address of issuer to revoke + signTransaction: (xdr: string, options?: any) => Promise; // Freighter signing function +} +``` + +**Example:** +```tsx +import { useVault } from '@acta-team/acta-sdk'; + +function RevokeIssuer() { + const { revokeIssuer } = useVault(); + const [issuerAddress, setIssuerAddress] = useState(''); + + const handleRevoke = async () => { + const walletAddress = await freighter.getPublicKey(); + + await revokeIssuer({ + owner: walletAddress, + issuer: issuerAddress, + signTransaction: freighter.signTransaction + }); + }; + + return ( +
+ setIssuerAddress(e.target.value)} + placeholder="Issuer wallet address" + /> + +
+ ); +} +``` + +**Returns:** Promise that resolves when issuer is revoked + +**Throws:** Error if revocation fails + +**⚠️ Warning:** Revoking an issuer affects ALL credentials from that issuer. They will no longer be considered valid. + +--- + +## useVaultRead Hook + +Hook for reading and verifying credentials. + +### Import + +```tsx +import { useVaultRead } from '@acta-team/acta-sdk'; +``` + +### Usage + +```tsx +const { verifyVc } = useVaultRead(); +``` + +### verifyVc() Method + +Verify a credential's validity and retrieve its data. + +**Function Signature:** +```tsx +async function verifyVc(params: VerifyVcParams): Promise +``` + +**Parameters:** +```typescript +interface VerifyVcParams { + owner: string; // Wallet address of credential holder + vcId: string; // Credential ID to verify +} +``` + +**Returns:** +```typescript +interface VerifyVcResult { + isValid: boolean; // Whether credential is valid + vcData: string; // JSON string of credential data (if valid) +} +``` + +**Example:** +```tsx +import { useVaultRead } from '@acta-team/acta-sdk'; + +function VerifyCredential() { + const { verifyVc } = useVaultRead(); + const [vcId, setVcId] = useState(''); + const [result, setResult] = useState(null); + + const handleVerify = async () => { + const walletAddress = await freighter.getPublicKey(); + + const verification = await verifyVc({ + owner: walletAddress, + vcId: vcId + }); + + if (verification.isValid) { + const credential = JSON.parse(verification.vcData); + setResult({ + valid: true, + credential + }); + } else { + setResult({ + valid: false, + error: 'Credential is not valid' + }); + } + }; + + return ( +
+ setVcId(e.target.value)} + placeholder="Credential ID" + /> + + + {result && ( +
+ {result.valid ? ( +
{JSON.stringify(result.credential, null, 2)}
+ ) : ( +

{result.error}

+ )} +
+ )} +
+ ); +} +``` + +**Throws:** Error if verification request fails (not the same as invalid credential) + +**Verification Checks:** +- Credential exists in vault +- Issuer is currently authorized for the vault +- Cryptographic signatures are valid +- Credential has not been tampered with + +--- + +## Freighter Wallet Integration + +### Installation + +```bash +# Install Freighter browser extension from: +# https://www.freighter.app/ +``` + +### Configuration + +1. Install Freighter extension +2. Create or import wallet +3. Switch to **Testnet** mode (for development) +4. Fund testnet account at https://laboratory.stellar.org/#account-creator?network=test + +### Getting Public Key + +```tsx +import freighter from '@stellar/freighter-api'; + +const publicKey = await freighter.getPublicKey(); +``` + +### Signing Transactions + +The `signTransaction` parameter in SDK methods expects Freighter's signing function: + +```tsx +import freighter from '@stellar/freighter-api'; + +// Pass directly to SDK methods +await issue({ + // ... other params + signTransaction: freighter.signTransaction +}); +``` + +**Freighter will:** +- Show transaction details to user +- Request user approval +- Sign transaction with private key +- Return signed transaction XDR + +**Security:** Private keys never leave the Freighter extension. + +--- + +## Error Handling + +### Common Errors + +**"User denied transaction"** +- User rejected signing in Freighter +- Ask user to try again + +**"Vault already exists"** +- User already has a vault +- Skip vault creation step + +**"Issuer not authorized"** +- Issuer must be authorized first +- Use `authorizeIssuer()` before issuing + +**"Invalid credential format"** +- vcData doesn't match W3C VC 2.0 schema +- Validate with `scripts/validate-credential.js` + +**"Network error"** +- Check API key is correct +- Verify internet connection +- Ensure Freighter is on correct network (testnet/mainnet) + +### Error Handling Pattern + +```tsx +try { + await issue({ /* params */ }); + console.log('✅ Credential issued successfully'); +} catch (error) { + if (error.message.includes('denied')) { + console.log('User cancelled transaction'); + } else if (error.message.includes('authorized')) { + console.log('Issuer needs authorization first'); + } else { + console.error('Error:', error.message); + } +} +``` + +--- + +## TypeScript Support + +The SDK is written in TypeScript and provides full type definitions. + +### Import Types + +```tsx +import type { + IssueCredentialParams, + CreateVaultParams, + AuthorizeIssuerParams, + RevokeIssuerParams, + VerifyVcParams, + VerifyVcResult +} from '@acta-team/acta-sdk'; +``` + +### Example with Types + +```tsx +import { useCredential } from '@acta-team/acta-sdk'; +import type { IssueCredentialParams } from '@acta-team/acta-sdk'; + +function IssueCredential() { + const { issue } = useCredential(); + + const handleIssue = async (params: IssueCredentialParams) => { + await issue(params); + }; + + return ; +} +``` + +--- + +## Best Practices + +### 1. Environment Variables +```tsx +// ✅ Good +const apiKey = process.env.ACTA_API_KEY_TESTNET; + +// ❌ Bad +const apiKey = 'hardcoded-key-here'; +``` + +### 2. Unique Credential IDs +```tsx +// ✅ Good +const vcId = `vc:education:degree:${Date.now()}-${Math.random()}`; + +// ❌ Bad +const vcId = 'vc:education:degree:1'; // Not unique! +``` + +### 3. Error Handling +```tsx +// ✅ Good +try { + await issue({ /* params */ }); +} catch (error) { + console.error('Issuance failed:', error); + // Show user-friendly message +} + +// ❌ Bad +await issue({ /* params */ }); // No error handling +``` + +### 4. Testnet First +```tsx +// ✅ Good + + +// ❌ Bad (for development) + +``` + +### 5. Validate Credentials +```tsx +// ✅ Good +const credential = { + '@context': ['https://www.w3.org/2018/credentials/v1'], + type: ['VerifiableCredential', 'EducationCredential'], + credentialSubject: { id: 'did:pkh:stellar:testnet:...' } +}; + +// ❌ Bad +const credential = { + type: 'education', // Missing required fields! + data: { ... } +}; +``` + +--- + +## React Version Compatibility + +- **Minimum:** React 16.8+ (hooks support) +- **Recommended:** React 18+ +- **Next.js:** Compatible with Next.js 13+ (App Router and Pages Router) + +--- + +## Complete Example Application + +See `assets/examples/` for complete working examples: +- `react-issue-credential.tsx` - Full issuance flow +- `react-verify-credential.tsx` - Full verification flow +- `vault-setup.tsx` - Vault creation and issuer authorization diff --git a/.agents/skills/acta/references/security-best-practices.md b/.agents/skills/acta/references/security-best-practices.md new file mode 100644 index 0000000..77f0313 --- /dev/null +++ b/.agents/skills/acta/references/security-best-practices.md @@ -0,0 +1,699 @@ +# Security Best Practices + +Critical security guidelines for integrating acta.build verifiable credentials. + +--- + +## API Key Management + +### Storage + +**✅ DO:** +```typescript +// Store in environment file +// .env.local +ACTA_API_KEY_TESTNET=your_api_key_here +ACTA_API_KEY_MAINNET=your_mainnet_key_here + +// Access in code +const apiKey = process.env.ACTA_API_KEY_TESTNET; +``` + +**❌ DON'T:** +```typescript +// NEVER hardcode API keys +const apiKey = 'sk_test_abc123...'; // ❌ BAD! + +// NEVER commit keys to version control +git add .env.local // ❌ BAD! +``` + +### .gitignore Configuration + +**Always exclude environment files:** +```gitignore +# .gitignore +.env +.env.local +.env.*.local +.env.development.local +.env.test.local +.env.production.local +``` + +**Verify exclusion:** +```bash +# Check that .env.local is not tracked +git status + +# Should NOT show .env.local in changes +``` + +### Key Rotation + +**When to rotate API keys:** +- Key accidentally committed to version control +- Key exposed in logs or error messages +- Key shared with unauthorized person +- Periodic rotation (every 90 days recommended) +- Security incident or breach + +**How to rotate:** +1. Generate new API key at https://dapp.acta.build +2. Update `.env.local` with new key +3. Test application with new key +4. Revoke old key in dashboard +5. Verify old key no longer works + +### API Key Permissions + +**Testnet API key:** +- Use for all development and testing +- Free to use (no cost) +- Can be regenerated freely +- Limited to testnet network + +**Mainnet API key:** +- Use ONLY for production +- Costs real XLM for transactions +- Protect as sensitive credential +- Monitor usage regularly + +**⚠️ NEVER use mainnet key during development!** + +--- + +## Private Key Security + +### Understanding Key Types + +**API Keys (acta.build):** +- Used for acta.build API access +- NOT blockchain private keys +- Cannot control user funds +- Cannot sign transactions +- Can be rotated freely + +**Wallet Private Keys (Stellar):** +- Control blockchain assets (XLM) +- Sign all blockchain transactions +- Authorize vault operations +- Stored in Freighter wallet +- NEVER shared with anyone + +**Critical distinction:** API keys ≠ Private keys + +### Wallet Private Key Protection + +**✅ DO:** +- Keep private keys in Freighter wallet +- Never extract private keys from wallet +- Use hardware wallet (Ledger) for mainnet +- Backup seed phrase offline (paper, metal) +- Store backup in secure location (safe, bank vault) +- Use testnet for development + +**❌ DON'T:** +- Share private keys or seed phrases +- Store private keys in code +- Save private keys in .env files +- Send private keys via email/chat +- Screenshot seed phrases +- Store seed phrases in cloud +- Use same wallet for testnet and mainnet + +### Non-Custodial Architecture + +**What this means:** +- You control your private keys +- acta.build cannot access your keys +- acta.build cannot sign transactions for you +- You are responsible for key security + +**Implications:** +- If you lose keys, you lose access to vault +- No "forgot password" recovery +- No customer support can recover keys +- Backup is YOUR responsibility + +### Transaction Signing + +**Secure signing flow:** +```typescript +// 1. Application requests operation +await issue({ owner, vcId, vcData, issuer, issuerDid, signTransaction }); + +// 2. acta.build SDK prepares transaction + +// 3. SDK calls Freighter to sign +signTransaction: freighter.signTransaction + +// 4. Freighter shows transaction to user +// "Sign transaction to issue credential?" + +// 5. User reviews and approves + +// 6. Freighter signs with private key (inside extension) + +// 7. Signed transaction returned to SDK + +// 8. SDK submits to Stellar network +``` + +**Security guarantees:** +- Private key never leaves Freighter +- User sees transaction before signing +- User can reject transaction +- Application never has access to private key + +--- + +## Credential Data Privacy + +### What's On-Chain + +**Publicly readable data:** +- Credential content (vcData JSON) +- Vault owner address +- Issuer address +- Credential ID +- Issuance timestamp + +**Anyone can read if they know:** +- Vault owner address +- Credential ID + +### Data Minimization + +**✅ DO:** +```json +{ + "credentialSubject": { + "id": "did:pkh:stellar:testnet:GXXXXX", + "degreeLevel": "Bachelor", + "field": "Computer Science", + "graduationYear": "2024", + "verified": true + } +} +``` + +**❌ DON'T:** +```json +{ + "credentialSubject": { + "id": "did:pkh:stellar:testnet:GXXXXX", + "ssn": "123-45-6789", // ❌ Sensitive! + "homeAddress": "123 Main St", // ❌ Private! + "phoneNumber": "+1-555-1234", // ❌ Personal! + "bankAccount": "9876543210", // ❌ Financial! + "medicalRecords": "..." // ❌ HIPAA violation! + } +} +``` + +### Sensitive Data Handling + +**Options for privacy-sensitive data:** + +1. **Hash instead of raw data:** +```json +{ + "credentialSubject": { + "id": "did:pkh:stellar:testnet:GXXXXX", + "ssnHash": "sha256:abc123...", + "verified": true + } +} +``` + +2. **Off-chain storage with proof:** +```json +{ + "credentialSubject": { + "id": "did:pkh:stellar:testnet:GXXXXX", + "dataUrl": "https://secure-storage.example.com/data/xyz", + "dataHash": "sha256:def456..." + } +} +``` + +3. **Zero-knowledge proofs (future):** +```json +{ + "credentialSubject": { + "id": "did:pkh:stellar:testnet:GXXXXX", + "ageOver21": true, // Proven without revealing exact age + "zkProof": "..." + } +} +``` + +### GDPR and Privacy Compliance + +**Challenges with blockchain:** +- Data is immutable (cannot be deleted) +- Right to erasure (GDPR) is difficult +- Data is publicly readable + +**Compliance strategies:** +1. **Don't store personal data on-chain** + - Use hashes and references instead + - Store sensitive data off-chain + +2. **Minimize data collection** + - Only include necessary fields + - Aggregate rather than specific data + +3. **User consent** + - Inform users data is permanent + - Get explicit consent before issuance + - Document consent in application + +4. **Selective disclosure** + - Use ZKP for privacy-sensitive claims + - Prove properties without revealing data + +--- + +## Network Security + +### Testnet vs Mainnet + +**Testnet (Development):** +- ✅ Use for all development +- ✅ Use for testing +- ✅ Use for demos +- ✅ Free (no real cost) +- ✅ Safe to experiment +- ✅ Can fail without consequences + +**Mainnet (Production):** +- ⚠️ Use ONLY for production +- ⚠️ Costs real XLM +- ⚠️ Transactions are permanent +- ⚠️ Requires explicit user confirmation +- ⚠️ Thorough testing required first + +### Environment Configuration + +**Separate environments:** +```typescript +// config.ts +export const config = { + development: { + apiKey: process.env.ACTA_API_KEY_TESTNET, + network: 'testnet', + didPrefix: 'did:pkh:stellar:testnet:' + }, + production: { + apiKey: process.env.ACTA_API_KEY_MAINNET, + network: 'mainnet', + didPrefix: 'did:pkh:stellar:mainnet:' + } +}; + +// Use based on NODE_ENV +const env = process.env.NODE_ENV === 'production' ? config.production : config.development; +``` + +### Network Validation + +**Always verify network before mainnet operations:** +```typescript +const confirmMainnetOperation = async (operation: string) => { + if (config.network === 'mainnet') { + const confirmed = confirm(` + ⚠️ MAINNET OPERATION WARNING + + You are about to perform: ${operation} + + This will: + - Use real XLM (costs money) + - Be permanent and cannot be undone + - Be publicly recorded on Stellar mainnet + + Are you absolutely sure? + `); + + if (!confirmed) { + throw new Error('Operation cancelled by user'); + } + } +}; + +// Use before mainnet operations +await confirmMainnetOperation('create vault'); +await createVault({ ... }); +``` + +--- + +## Application Security + +### Input Validation + +**Validate all inputs before issuing credentials:** +```typescript +const validateCredentialInput = (vcData: any) => { + // Check required fields + if (!vcData['@context']) { + throw new Error('Missing @context'); + } + + if (!vcData.type || !vcData.type.includes('VerifiableCredential')) { + throw new Error('Invalid type'); + } + + if (!vcData.credentialSubject) { + throw new Error('Missing credentialSubject'); + } + + if (!vcData.credentialSubject.id || !vcData.credentialSubject.id.startsWith('did:')) { + throw new Error('Invalid credentialSubject.id'); + } + + // Validate structure + try { + JSON.stringify(vcData); + } catch { + throw new Error('Credential data is not valid JSON'); + } + + return true; +}; + +// Use before issuing +validateCredentialInput(credential); +await issue({ vcData: JSON.stringify(credential), ... }); +``` + +### Issuer Verification + +**Verify issuer identity before accepting credentials:** +```typescript +const trustedIssuers = { + 'GUNIVERSITY123...': { + name: 'Example University', + types: ['EducationCredential'], + verified: true + }, + 'GCOMPANY456...': { + name: 'Acme Corporation', + types: ['EmploymentCredential'], + verified: true + } +}; + +const verifyIssuer = (issuerAddress: string, credentialType: string) => { + const issuer = trustedIssuers[issuerAddress]; + + if (!issuer) { + throw new Error('Unknown issuer'); + } + + if (!issuer.verified) { + throw new Error('Issuer not verified'); + } + + if (!issuer.types.includes(credentialType)) { + throw new Error('Issuer not authorized for this credential type'); + } + + return issuer; +}; +``` + +### Rate Limiting + +**Prevent abuse with rate limiting:** +```typescript +// Simple in-memory rate limiter +const rateLimiter = new Map(); + +const checkRateLimit = (userId: string, maxRequests: number, windowMs: number) => { + const now = Date.now(); + const userRequests = rateLimiter.get(userId) || []; + + // Remove old requests outside window + const recentRequests = userRequests.filter(time => now - time < windowMs); + + if (recentRequests.length >= maxRequests) { + throw new Error('Rate limit exceeded. Please try again later.'); + } + + recentRequests.push(now); + rateLimiter.set(userId, recentRequests); +}; + +// Use before credential operations +checkRateLimit(walletAddress, 10, 60000); // 10 requests per minute +await issue({ ... }); +``` + +--- + +## Error Handling + +### Don't Expose Sensitive Info + +**✅ DO:** +```typescript +try { + await issue({ ... }); +} catch (error) { + // Log full error server-side + console.error('Credential issuance failed:', error); + + // Show user-friendly message + throw new Error('Failed to issue credential. Please try again.'); +} +``` + +**❌ DON'T:** +```typescript +try { + await issue({ ... }); +} catch (error) { + // Don't expose stack traces to users + alert(error.stack); // ❌ BAD! + + // Don't expose internal details + throw new Error(`Database error: ${dbConnectionString}`); // ❌ BAD! +} +``` + +### Secure Logging + +**✅ DO:** +```typescript +// Log safely +console.log('Credential issued', { + vcId: 'vc:education:degree:12345', + owner: 'GXXXXX...XXXXX', // Truncate + timestamp: new Date().toISOString() +}); +``` + +**❌ DON'T:** +```typescript +// Don't log sensitive data +console.log('API Key:', process.env.ACTA_API_KEY); // ❌ BAD! +console.log('Full credential:', vcData); // ❌ May contain PII! +console.log('User data:', userData); // ❌ May contain PII! +``` + +--- + +## Dependency Security + +### Keep Dependencies Updated + +```bash +# Check for vulnerabilities +npm audit + +# Fix vulnerabilities +npm audit fix + +# Update dependencies +npm update +``` + +### Verify Package Integrity + +```bash +# Use package-lock.json +npm ci # Instead of npm install + +# Verify signatures +npm verify +``` + +### Trusted Dependencies + +**Official packages:** +- `@acta-team/acta-sdk` - Official acta.build SDK +- `@stellar/freighter-api` - Official Freighter wallet SDK +- `stellar-sdk` - Official Stellar SDK + +**⚠️ Warning:** Be cautious of typosquatting (e.g., `acta-sdk` vs `@acta-team/acta-sdk`) + +--- + +## Deployment Security + +### HTTPS Required + +**✅ DO:** +``` +https://your-app.example.com +``` + +**❌ DON'T:** +``` +http://your-app.example.com // ❌ Insecure! +``` + +### Environment Variables in Production + +**Use secure secret management:** +- AWS Secrets Manager +- Google Cloud Secret Manager +- Azure Key Vault +- Vercel Environment Variables +- Netlify Environment Variables + +**Don't use:** +- Hardcoded values +- Committed .env files +- Unencrypted configuration files + +### Content Security Policy + +```typescript +// Add CSP headers +const cspHeader = ` + default-src 'self'; + script-src 'self' 'unsafe-eval' 'unsafe-inline'; + connect-src 'self' https://api.acta.build https://soroban-testnet.stellar.org; + img-src 'self' data: https:; + style-src 'self' 'unsafe-inline'; +`; + +// In Next.js +export const headers = [ + { + key: 'Content-Security-Policy', + value: cspHeader.replace(/\s{2,}/g, ' ').trim() + } +]; +``` + +--- + +## Security Checklist + +### Development +- [ ] API keys in .env.local (not hardcoded) +- [ ] .env.local in .gitignore +- [ ] Using testnet for development +- [ ] Input validation on all credential data +- [ ] Error handling doesn't expose sensitive info +- [ ] Dependencies are up to date +- [ ] No credentials committed to Git + +### Production +- [ ] HTTPS enabled +- [ ] Environment variables in secure storage +- [ ] Rate limiting implemented +- [ ] Monitoring and alerting configured +- [ ] Issuer verification in place +- [ ] CSP headers configured +- [ ] Mainnet operations require confirmation +- [ ] Audit logging enabled +- [ ] Regular security reviews scheduled + +### User Education +- [ ] Users understand private key custody +- [ ] Users know credentials are immutable +- [ ] Users consent to on-chain storage +- [ ] Users understand testnet vs mainnet +- [ ] Users backup their seed phrases +- [ ] Users understand revocation implications + +--- + +## Incident Response + +### If API Key Exposed + +1. **Immediately rotate key:** + - Generate new API key + - Update production environment + - Revoke old key + +2. **Assess damage:** + - Check API usage logs + - Identify unauthorized operations + - Document timeline + +3. **Notify affected users** (if applicable) + +### If Private Key Compromised + +1. **Transfer assets:** + - Move XLM to new wallet + - Create new vault in new wallet + - Request credential re-issuance + +2. **Revoke compromised vault:** + - Notify verifiers + - Update application to use new vault + +3. **Document incident:** + - Timeline of compromise + - Steps taken + - Lessons learned + +--- + +## Security Resources + +### Official Documentation +- acta.build Security: https://docs.acta.build/security +- Stellar Security: https://developers.stellar.org/docs/learn/security +- W3C VC Security: https://www.w3.org/TR/vc-data-model/#security-considerations + +### Security Tools +- API key scanning: GitGuardian, TruffleHog +- Dependency scanning: npm audit, Snyk +- Code analysis: SonarQube, CodeQL + +### Reporting Security Issues +- Email: security@acta.build (if available) +- GitHub Security Advisories +- Responsible disclosure + +--- + +## Threat Model + +### Threats Mitigated +✅ API key theft (via .env.local and rotation) +✅ Private key theft (via non-custodial architecture) +✅ Man-in-the-middle (via HTTPS) +✅ Unauthorized credential issuance (via issuer authorization) +✅ Credential tampering (via cryptographic signatures) + +### Threats to Consider +⚠️ Phishing attacks (user education required) +⚠️ Social engineering (user awareness required) +⚠️ Malicious issuers (issuer verification required) +⚠️ Compromised dependencies (auditing required) +⚠️ Data privacy (minimize on-chain data) + +### Out of Scope +❌ Freighter wallet vulnerabilities (trust wallet security) +❌ Stellar network attacks (trust Stellar consensus) +❌ Browser/OS vulnerabilities (trust user environment) diff --git a/.agents/skills/acta/references/vault-management.md b/.agents/skills/acta/references/vault-management.md new file mode 100644 index 0000000..184000b --- /dev/null +++ b/.agents/skills/acta/references/vault-management.md @@ -0,0 +1,658 @@ +# Vault Management Reference + +Complete guide to creating and managing credential vaults on acta.build. + +--- + +## What is a Vault? + +A **vault** is an encrypted, on-chain storage container for verifiable credentials on the Stellar blockchain. + +### Key Characteristics + +- **One vault per wallet address** - Each Stellar wallet can have exactly one vault +- **Owner-controlled** - Only the vault owner can authorize issuers and manage access +- **Encrypted on-chain** - Stored on Stellar/Soroban smart contracts +- **Permanent** - Once created, vaults cannot be deleted +- **Non-custodial** - Owner controls private keys via wallet (Freighter) + +### Vault Contents + +Each vault stores: +- **Credentials (VCs)** - W3C Verifiable Credentials 2.0 +- **Authorized Issuers** - List of wallet addresses allowed to issue credentials +- **Owner DID** - Decentralized identifier of vault owner +- **Metadata** - Vault creation timestamp, contract address, etc. + +--- + +## Vault Creation + +### Prerequisites + +- [ ] Freighter wallet installed and configured +- [ ] Wallet funded with testnet XLM (for testnet) or real XLM (for mainnet) +- [ ] API key configured in environment +- [ ] Wallet connected and unlocked + +### Create Vault (React SDK) + +```typescript +import { useVault } from '@acta-team/acta-sdk'; +import freighter from '@stellar/freighter-api'; + +function CreateVaultComponent() { + const { createVault } = useVault(); + const [status, setStatus] = useState(''); + + const handleCreateVault = async () => { + try { + setStatus('Creating vault...'); + + // Get wallet address + const walletAddress = await freighter.getPublicKey(); + + // Create owner DID + const ownerDid = `did:pkh:stellar:testnet:${walletAddress}`; + + // Create vault + await createVault({ + owner: walletAddress, + ownerDid: ownerDid, + signTransaction: freighter.signTransaction + }); + + setStatus('✅ Vault created successfully!'); + } catch (error) { + if (error.message.includes('already exists')) { + setStatus('ℹ️ Vault already exists for this wallet'); + } else { + setStatus(`❌ Error: ${error.message}`); + } + } + }; + + return ( +
+ +

{status}

+
+ ); +} +``` + +### Vault Creation Parameters + +```typescript +interface CreateVaultParams { + owner: string; // Stellar wallet address (e.g., 'GXXXXXXXX...') + ownerDid: string; // DID format: 'did:pkh:stellar:testnet:GXXXXXXXX...' + signTransaction: (xdr: string, options?: any) => Promise; +} +``` + +### Network-Specific DIDs + +**Testnet:** +```typescript +const ownerDid = `did:pkh:stellar:testnet:${walletAddress}`; +``` + +**Mainnet:** +```typescript +const ownerDid = `did:pkh:stellar:mainnet:${walletAddress}`; +``` + +**⚠️ Important:** DID network must match your API key's network (testnet vs mainnet). + +--- + +## Vault Lifecycle + +### 1. Pre-Creation State +- User has wallet but no vault +- Cannot receive credentials yet +- Must create vault before credential operations + +### 2. Vault Creation +- User signs transaction with Freighter +- Soroban smart contract deployed +- Owner DID registered +- Vault address recorded + +### 3. Active State +- Vault exists and is operational +- Owner can authorize/revoke issuers +- Credentials can be issued and verified +- Vault is permanent + +### 4. No Deletion +- Vaults cannot be deleted or destroyed +- Data remains on blockchain permanently +- Owner retains control indefinitely + +--- + +## Issuer Authorization Management + +Vault owners control which wallet addresses can issue credentials to their vault. + +### Authorization Model + +**Who needs authorization:** +- External issuers (universities, employers, certification bodies) +- Any wallet address ≠ vault owner + +**Who doesn't need authorization:** +- Vault owner (automatically authorized for own vault) +- Read-only verifiers (no authorization needed) + +--- + +### Authorize Issuer + +Grant permission for an issuer to add credentials to your vault. + +```typescript +import { useVault } from '@acta-team/acta-sdk'; + +const { authorizeIssuer } = useVault(); + +// Example: Authorize university to issue degrees +const universityWallet = 'GUNIVERSITY123...'; + +await authorizeIssuer({ + owner: await freighter.getPublicKey(), + issuer: universityWallet, + signTransaction: freighter.signTransaction +}); +``` + +### Authorization Parameters + +```typescript +interface AuthorizeIssuerParams { + owner: string; // Your wallet address (vault owner) + issuer: string; // Wallet address to authorize + signTransaction: Function; // Freighter signing function +} +``` + +### Authorization Use Cases + +**Educational Institution:** +```typescript +// Student authorizes university to issue degree credentials +await authorizeIssuer({ + owner: studentWallet, + issuer: universityWallet, + signTransaction: freighter.signTransaction +}); + +// University can now issue credentials to student's vault +await issue({ + owner: studentWallet, + vcId: 'vc:education:degree:12345', + vcData: degreeCredentialJson, + issuer: universityWallet, + issuerDid: `did:pkh:stellar:testnet:${universityWallet}`, + signTransaction: universityFreighter.signTransaction +}); +``` + +**Employer:** +```typescript +// Employee authorizes company to issue employment credentials +await authorizeIssuer({ + owner: employeeWallet, + issuer: companyWallet, + signTransaction: freighter.signTransaction +}); +``` + +**KYC Provider:** +```typescript +// User authorizes KYC service to issue identity credentials +await authorizeIssuer({ + owner: userWallet, + issuer: kycProviderWallet, + signTransaction: freighter.signTransaction +}); +``` + +--- + +### Revoke Issuer + +Remove an issuer's permission to add credentials. + +```typescript +import { useVault } from '@acta-team/acta-sdk'; + +const { revokeIssuer } = useVault(); + +// Example: Revoke university's authorization +await revokeIssuer({ + owner: await freighter.getPublicKey(), + issuer: universityWallet, + signTransaction: freighter.signTransaction +}); +``` + +### Revocation Parameters + +```typescript +interface RevokeIssuerParams { + owner: string; // Your wallet address (vault owner) + issuer: string; // Wallet address to revoke + signTransaction: Function; // Freighter signing function +} +``` + +### Effects of Revocation + +**Immediate effects:** +✅ Issuer can no longer issue new credentials +✅ All existing credentials from this issuer become invalid +✅ `verifyVc()` returns `isValid: false` for affected credentials + +**What is NOT affected:** +❌ Credentials are not deleted (immutable blockchain) +❌ Credential data still exists on-chain +❌ Other issuers' credentials are unaffected + +### When to Revoke + +**Security incidents:** +- Issuer's private key compromised +- Issuer account hacked +- Fraudulent credential issuance detected + +**Trust loss:** +- University loses accreditation +- Company commits fraud +- Certification body loses credibility + +**Relationship termination:** +- No longer working for employer +- Graduated from educational institution +- Service contract ended + +**Example: Security Breach** +```typescript +// University reports security breach +console.log('⚠️ University XYZ reported key compromise'); + +// Immediately revoke authorization +await revokeIssuer({ + owner: studentWallet, + issuer: universityWallet, + signTransaction: freighter.signTransaction +}); + +console.log('✅ Authorization revoked. All credentials now invalid.'); +``` + +--- + +## Querying Vaults + +### Verify Credentials (Read-Only) + +Anyone can verify credentials if they know the vault owner and credential ID. + +```typescript +import { useVaultRead } from '@acta-team/acta-sdk'; + +const { verifyVc } = useVaultRead(); + +// Verify a credential +const result = await verifyVc({ + owner: 'GSTUDENT123...', + vcId: 'vc:education:degree:12345' +}); + +if (result.isValid) { + const credential = JSON.parse(result.vcData); + console.log('Degree:', credential.credentialSubject.degree); + console.log('University:', credential.credentialSubject.university); +} +``` + +**No wallet signature required** - verification is read-only. + +### Query Parameters + +```typescript +interface VerifyVcParams { + owner: string; // Vault owner's wallet address + vcId: string; // Credential ID to verify +} +``` + +### Verification Returns + +```typescript +interface VerifyVcResult { + isValid: boolean; // true if credential is valid + vcData: string; // JSON string of credential (if valid) +} +``` + +--- + +## Vault Security + +### Access Control + +**Write Operations (require signature):** +- Create vault → Owner only +- Authorize issuer → Owner only +- Revoke issuer → Owner only +- Issue credential → Authorized issuer only + +**Read Operations (no signature required):** +- Verify credential → Anyone +- Query vault → Anyone + +### Private Key Security + +**Owner's private key controls:** +- Vault creation +- Issuer authorization +- Issuer revocation +- All vault management operations + +**Security best practices:** +- 🔐 Never share private keys or seed phrases +- 🔐 Use hardware wallet for mainnet (Ledger with Freighter) +- 🔐 Use testnet for development and testing +- 🔐 Keep backup of seed phrase in secure location +- 🔐 Never store private keys in code or environment files + +**What acta.build CANNOT do:** +- ❌ Access your private keys +- ❌ Sign transactions on your behalf +- ❌ Control your vault without your signature +- ❌ Steal or modify your credentials + +--- + +## Multi-Vault Scenarios + +### One User, Multiple Networks + +A user can have: +- One vault on **testnet** (for testing) +- One vault on **mainnet** (for production) + +**Same wallet address, different vaults:** +```typescript +// Testnet vault +await createVault({ + owner: walletAddress, + ownerDid: `did:pkh:stellar:testnet:${walletAddress}`, + signTransaction: freighter.signTransaction +}); + +// Mainnet vault (separate API key) +await createVault({ + owner: walletAddress, + ownerDid: `did:pkh:stellar:mainnet:${walletAddress}`, + signTransaction: freighter.signTransaction +}); +``` + +**Important:** Use correct API key for each network. + +### Multiple Users, Multiple Vaults + +Each user has their own vault: + +```typescript +// Alice's vault +await createVault({ + owner: aliceWallet, + ownerDid: `did:pkh:stellar:testnet:${aliceWallet}`, + signTransaction: aliceFreighter.signTransaction +}); + +// Bob's vault +await createVault({ + owner: bobWallet, + ownerDid: `did:pkh:stellar:testnet:${bobWallet}`, + signTransaction: bobFreighter.signTransaction +}); +``` + +Vaults are completely independent - no shared data. + +--- + +## Vault Management Best Practices + +### 1. Testnet First + +✅ **Always create testnet vault first:** +```typescript +// Development +const ownerDid = `did:pkh:stellar:testnet:${walletAddress}`; +``` + +❌ **Don't start with mainnet:** +```typescript +// WAIT until thoroughly tested! +const ownerDid = `did:pkh:stellar:mainnet:${walletAddress}`; +``` + +### 2. Document Authorized Issuers + +Keep a record of who you've authorized: + +```typescript +// Maintain a list +const authorizedIssuers = [ + { name: 'Example University', wallet: 'GUNIV123...', date: '2024-01-15' }, + { name: 'Acme Corp', wallet: 'GACME456...', date: '2024-02-20' } +]; + +// Add to list when authorizing +await authorizeIssuer({ owner, issuer: newIssuer, signTransaction }); +authorizedIssuers.push({ + name: 'New Issuer', + wallet: newIssuer, + date: new Date().toISOString() +}); +``` + +### 3. Periodic Issuer Review + +Review authorized issuers regularly: + +```typescript +// Quarterly review +const reviewAuthorizedIssuers = () => { + authorizedIssuers.forEach(issuer => { + console.log(`${issuer.name} - ${issuer.wallet}`); + // Decide if authorization should continue + }); +}; +``` + +### 4. Immediate Revocation on Compromise + +Don't delay if issuer is compromised: + +```typescript +// As soon as compromise detected +await revokeIssuer({ + owner, + issuer: compromisedIssuerWallet, + signTransaction +}); +``` + +### 5. Backup Wallet Access + +Ensure you can always access your wallet: + +- ✅ Store seed phrase securely offline +- ✅ Test recovery process +- ✅ Consider multi-signature for high-value vaults (future) +- ✅ Document vault creation date and network + +--- + +## Error Handling + +### Vault Already Exists + +```typescript +try { + await createVault({ owner, ownerDid, signTransaction }); +} catch (error) { + if (error.message.includes('already exists')) { + console.log('ℹ️ Vault already created. Skipping creation.'); + // Continue with next step + } else { + throw error; + } +} +``` + +### Insufficient Balance + +``` +Error: Account does not have sufficient balance +``` + +**Solution:** +- Fund wallet with testnet XLM: https://laboratory.stellar.org/#account-creator?network=test +- For mainnet: Add XLM to wallet + +### Wrong Network + +``` +Error: Network mismatch +``` + +**Solution:** +- Check Freighter is on correct network (testnet/mainnet) +- Verify API key matches network +- Ensure DID has correct network identifier + +### Authorization Errors + +``` +Error: Issuer GXXXXX is not authorized +``` + +**Solution:** +```typescript +// Authorize issuer first +await authorizeIssuer({ owner, issuer, signTransaction }); + +// Then issue credential +await issue({ owner, vcId, vcData, issuer, issuerDid, signTransaction }); +``` + +--- + +## Testing Checklist + +### Vault Creation +- [ ] Create vault on testnet successfully +- [ ] Attempt to create vault twice (should fail gracefully) +- [ ] Create vault with insufficient balance (should fail with clear error) +- [ ] Verify vault exists after creation + +### Issuer Authorization +- [ ] Authorize external issuer successfully +- [ ] Issue credential from authorized issuer +- [ ] Attempt to issue from unauthorized issuer (should fail) +- [ ] Authorize same issuer twice (should succeed or be idempotent) + +### Issuer Revocation +- [ ] Revoke authorized issuer successfully +- [ ] Verify credentials become invalid after revocation +- [ ] Attempt to issue after revocation (should fail) +- [ ] Re-authorize previously revoked issuer + +### Verification +- [ ] Verify valid credential returns isValid: true +- [ ] Verify credential from revoked issuer returns isValid: false +- [ ] Verify non-existent credential returns isValid: false +- [ ] Verify credential without wallet signature (read-only) + +--- + +## Advanced Patterns + +### Multi-Issuer Workflow + +User receives credentials from multiple sources: + +```typescript +// Phase 1: Create vault +await createVault({ owner, ownerDid, signTransaction }); + +// Phase 2: Authorize multiple issuers +await authorizeIssuer({ owner, issuer: universityWallet, signTransaction }); +await authorizeIssuer({ owner, issuer: employerWallet, signTransaction }); +await authorizeIssuer({ owner, issuer: kycProviderWallet, signTransaction }); + +// Phase 3: Each issuer can now issue credentials independently +// University issues degree +// Employer issues employment verification +// KYC provider issues identity credential + +// All credentials coexist in the same vault +``` + +### Credential Portfolio + +Vault as a complete credential portfolio: + +``` +Vault: GUSER123... +├── Education +│ ├── vc:education:degree:bachelor-cs-2024 +│ ├── vc:education:certificate:aws-certified-2023 +│ └── vc:education:bootcamp:fullstack-2022 +├── Employment +│ ├── vc:employment:current:acme-corp +│ └── vc:employment:previous:startup-xyz +└── Identity + ├── vc:identity:kyc:level-2 + └── vc:identity:age-verification +``` + +### Issuer Rotation + +Replace compromised issuer with new one: + +```typescript +// Step 1: Revoke old issuer +await revokeIssuer({ owner, issuer: oldUniversityWallet, signTransaction }); + +// Step 2: Authorize new issuer +await authorizeIssuer({ owner, issuer: newUniversityWallet, signTransaction }); + +// Step 3: Request credential re-issuance from new issuer +// (Application-specific logic) +``` + +--- + +## Future Enhancements + +### Coming Soon + +- **Bulk operations** - Authorize/revoke multiple issuers at once +- **Issuer metadata** - Store issuer names and descriptions +- **Credential queries** - List all credentials in a vault +- **Credential search** - Filter credentials by type +- **Access control lists** - Fine-grained permissions +- **Multi-signature vaults** - Shared vault control + +See roadmap at https://github.com/ACTA-Team for updates. diff --git a/.agents/skills/acta/references/zero-knowledge-proofs.md b/.agents/skills/acta/references/zero-knowledge-proofs.md new file mode 100644 index 0000000..e60e75b --- /dev/null +++ b/.agents/skills/acta/references/zero-knowledge-proofs.md @@ -0,0 +1,310 @@ +# Zero-Knowledge Proofs (Future Expansion) + +This document is a placeholder for future ZKP integration with acta.build. + +--- + +## Status + +**🚧 Under Development** + +Zero-knowledge proof functionality for acta.build is currently in development. This reference will be expanded when ZKP features become available. + +--- + +## Overview + +Zero-knowledge proofs (ZKPs) enable proving specific claims about credentials without revealing the underlying data. + +### Use Cases + +**Age Verification:** +- Prove age > 21 without revealing exact birthdate +- Prove age > 18 for content access +- Prove age in range (e.g., 25-35) for demographics + +**Identity Verification:** +- Prove citizenship without revealing full identity +- Prove residency in a country without revealing address +- Prove identity matches without revealing personal details + +**Financial:** +- Prove income > threshold without revealing exact salary +- Prove credit score > minimum without revealing exact score +- Prove account balance > amount without revealing balance + +**Education:** +- Prove degree completion without revealing GPA +- Prove graduation year in range without revealing exact date +- Prove enrollment status without revealing personal details + +--- + +## Available Resources + +### acta.build ZKP Repository + +acta.build has a zero-knowledge proof implementation in development: + +**Repository:** https://github.com/ACTA-Team/zk-test + +This repository contains: +- ZK circuits for selective disclosure +- Proof generation and verification +- Integration with Stellar blockchain +- Example implementations + +**Note:** Check repository for latest status and documentation. + +--- + +## Planned Features + +### Selective Disclosure + +Reveal only specific fields from a credential: + +```typescript +// Hypothetical API (not yet available) +const proof = await generateSelectiveDisclosureProof({ + credential: educationCredential, + revealedFields: ['degree', 'university'], + hiddenFields: ['gpa', 'studentId'] +}); + +// Verifier sees only revealed fields +const verified = await verifySelectiveDisclosureProof(proof); +``` + +### Range Proofs + +Prove a value falls within a range: + +```typescript +// Hypothetical API (not yet available) +const proof = await generateRangeProof({ + credential: ageCredential, + claim: 'age', + range: { min: 21, max: 120 } // Prove age >= 21 +}); + +// Verifier confirms age > 21 without seeing exact age +const verified = await verifyRangeProof(proof); +``` + +### Set Membership + +Prove a value belongs to a set: + +```typescript +// Hypothetical API (not yet available) +const proof = await generateSetMembershipProof({ + credential: nationalityCredential, + claim: 'country', + validSet: ['USA', 'Canada', 'UK', 'Australia'] +}); + +// Verifier confirms nationality is in set without seeing specific country +const verified = await verifySetMembershipProof(proof); +``` + +--- + +## Technical Approach + +### Expected Architecture + +**Circuit Design:** +- ZK circuits for common proof types +- Optimized for Stellar/Soroban constraints +- Verifiable on-chain + +**Proof Generation:** +- Client-side proof generation +- Browser-compatible libraries +- Reasonable computation time + +**On-Chain Verification:** +- Soroban smart contracts verify proofs +- Gas-efficient verification +- Results stored on-chain + +--- + +## Integration Plan + +### Phase 1: Basic Selective Disclosure +- Hide/reveal specific credential fields +- Simple proof generation +- On-chain verification + +### Phase 2: Range Proofs +- Age verification +- Score thresholds +- Numeric range proofs + +### Phase 3: Advanced Proofs +- Set membership +- Predicate proofs +- Composite proofs + +--- + +## Timeline + +**Current Status:** Research and development + +**Expected Availability:** TBD + +**Updates:** Check https://github.com/ACTA-Team/zk-test and https://docs.acta.build for latest information. + +--- + +## When to Use ZKPs + +### Good Use Cases +✅ Privacy-sensitive personal data +✅ Regulatory compliance (KYC without PII exposure) +✅ Age verification +✅ Threshold proofs (salary, credit score) +✅ Selective credential sharing + +### When NOT to Use ZKPs +❌ Public information (university name, job title) +❌ Non-sensitive data +❌ When full disclosure is required +❌ Performance-critical applications (ZKP has computation overhead) + +--- + +## Alternative Approaches (Until ZKP Available) + +### 1. Hash-Based Verification + +Store hash of sensitive data: + +```json +{ + "@context": ["https://www.w3.org/2018/credentials/v1"], + "type": ["VerifiableCredential", "IdentityCredential"], + "credentialSubject": { + "id": "did:pkh:stellar:testnet:GXXXXX", + "ssnHash": "sha256:abc123...", + "verified": true + } +} +``` + +User can prove they know the original value by revealing it for hash comparison. + +### 2. Off-Chain Storage with Proofs + +Store sensitive data off-chain, credential contains only proof: + +```json +{ + "@context": ["https://www.w3.org/2018/credentials/v1"], + "type": ["VerifiableCredential", "EducationCredential"], + "credentialSubject": { + "id": "did:pkh:stellar:testnet:GXXXXX", + "dataUrl": "https://secure-storage.example.com/data/xyz", + "dataHash": "sha256:def456...", + "verified": true + } +} +``` + +Access control on off-chain storage provides privacy. + +### 3. Multiple Credentials + +Issue separate credentials for different disclosure levels: + +```typescript +// High-detail credential (private) +const detailedCredential = { + credentialSubject: { + id: holderDid, + degree: 'Bachelor of Science', + major: 'Computer Science', + university: 'Example University', + graduationDate: '2024-05-15', + gpa: '3.8', + studentId: '12345' + } +}; + +// Low-detail credential (public) +const summaryCredential = { + credentialSubject: { + id: holderDid, + degreeLevel: 'Bachelor', + field: 'Computer Science', + graduationYear: '2024', + verified: true + } +}; + +// User shares appropriate credential based on context +``` + +--- + +## Research and Learning + +### Understanding Zero-Knowledge Proofs + +**Concepts:** +- Prover, Verifier, Witness +- Completeness, Soundness, Zero-Knowledge +- zk-SNARKs, zk-STARKs +- Trusted setup vs transparent setup + +**Resources:** +- ZK Whiteboard Sessions: https://zkhack.dev/whiteboard/ +- Zero Knowledge Proofs MOOC: https://zk-learning.org/ +- Practical zk-SNARKs: https://www.npmjs.com/package/snarkjs + +### Stellar/Soroban ZK Integration + +**Soroban Capabilities:** +- Smart contract verification +- Gas costs for ZK verification +- State storage for proofs + +**Stellar Network:** +- Transaction size limits +- Computational constraints +- Cost considerations + +--- + +## Stay Updated + +**Official Channels:** +- GitHub: https://github.com/ACTA-Team/zk-test +- Documentation: https://docs.acta.build +- Discord: https://discord.gg/DsUSE3aMDZ + +**Community:** +- Join discussions about ZKP features +- Share use cases and requirements +- Contribute to development + +--- + +## Placeholder Notice + +⚠️ **This document is a placeholder.** + +The information above represents planned or potential features. Actual implementation may differ. + +**Check official acta.build documentation for:** +- Current ZKP availability +- Implementation details +- API reference +- Code examples +- Best practices + +**Last Updated:** 2024 (placeholder) +**Next Review:** When ZKP features are released diff --git a/.agents/skills/acta/scripts/test-api-connection.js b/.agents/skills/acta/scripts/test-api-connection.js new file mode 100644 index 0000000..6c497a3 --- /dev/null +++ b/.agents/skills/acta/scripts/test-api-connection.js @@ -0,0 +1,140 @@ +#!/usr/bin/env node + +/** + * Test acta.build API Connection + * + * This script verifies: + * - API key is configured correctly + * - Connection to acta.build API works + * - Network configuration is valid + * + * Usage: + * node scripts/test-api-connection.js + * + * Prerequisites: + * - ACTA_API_KEY_TESTNET in .env.local + */ + +const https = require('https'); +const path = require('path'); +const fs = require('fs'); + +// Load environment variables from .env.local +const envPath = path.join(process.cwd(), '.env.local'); +if (fs.existsSync(envPath)) { + const envContent = fs.readFileSync(envPath, 'utf-8'); + envContent.split('\n').forEach(line => { + const [key, ...valueParts] = line.split('='); + if (key && valueParts.length > 0) { + process.env[key.trim()] = valueParts.join('=').trim(); + } + }); +} + +const apiKey = process.env.ACTA_API_KEY_TESTNET; + +console.log('🔍 Testing acta.build API Connection...\n'); + +// Check if API key exists +if (!apiKey) { + console.error('❌ ERROR: ACTA_API_KEY_TESTNET not found in .env.local'); + console.log('\n📋 To fix this:'); + console.log('1. Obtain API key from https://dapp.acta.build'); + console.log('2. Create .env.local file in project root'); + console.log('3. Add: ACTA_API_KEY_TESTNET=your_api_key_here'); + console.log('4. Make sure .env.local is in .gitignore'); + process.exit(1); +} + +console.log('✅ API key found in environment'); +console.log(` Key: ${apiKey.substring(0, 10)}...${apiKey.substring(apiKey.length - 4)}\n`); + +// Test API connection +const options = { + hostname: 'api.acta.build', + path: '/config', + method: 'GET', + headers: { + 'Authorization': `Bearer ${apiKey}`, + 'Content-Type': 'application/json' + } +}; + +console.log('🌐 Testing connection to https://api.acta.build/config...\n'); + +const req = https.request(options, (res) => { + let data = ''; + + res.on('data', (chunk) => { + data += chunk; + }); + + res.on('end', () => { + if (res.statusCode === 200) { + console.log('✅ API connection successful!\n'); + + try { + const config = JSON.parse(data); + + console.log('📊 Configuration Details:'); + console.log('─────────────────────────────────────────'); + console.log(`Network: ${config.network || 'testnet'}`); + console.log(`RPC URL: ${config.rpcUrl || 'N/A'}`); + console.log(`Contract: ${config.contractAddress ? config.contractAddress.substring(0, 20) + '...' : 'N/A'}`); + console.log(`Passphrase: ${config.passphrase ? config.passphrase.substring(0, 30) + '...' : 'N/A'}`); + console.log('─────────────────────────────────────────\n'); + + // Verify network + if (config.network === 'testnet' || !config.network) { + console.log('✅ Using TESTNET (safe for development)'); + } else if (config.network === 'mainnet') { + console.log('⚠️ WARNING: Using MAINNET (real transactions!)'); + console.log(' Switch to testnet for development'); + } + + console.log('\n🎉 Setup is complete! You can start using acta.build.\n'); + + } catch (error) { + console.error('❌ Failed to parse API response'); + console.error('Response:', data); + } + } else if (res.statusCode === 401) { + console.error('❌ Authentication failed (401 Unauthorized)'); + console.log('\n📋 Possible issues:'); + console.log('- API key is invalid or expired'); + console.log('- API key format is incorrect'); + console.log('\n✅ Solutions:'); + console.log('1. Generate new API key at https://dapp.acta.build'); + console.log('2. Update ACTA_API_KEY_TESTNET in .env.local'); + console.log('3. Verify no extra spaces in the key'); + } else if (res.statusCode === 403) { + console.error('❌ Access forbidden (403 Forbidden)'); + console.log('\n📋 Possible issues:'); + console.log('- API key doesn\'t have required permissions'); + console.log('- API key is for wrong environment'); + } else { + console.error(`❌ API connection failed with status ${res.statusCode}`); + console.error('Response:', data); + } + }); +}); + +req.on('error', (error) => { + console.error('❌ Connection error:', error.message); + console.log('\n📋 Possible issues:'); + console.log('- No internet connection'); + console.log('- Firewall blocking HTTPS requests'); + console.log('- api.acta.build is temporarily unavailable'); + console.log('\n✅ Solutions:'); + console.log('1. Check your internet connection'); + console.log('2. Try again in a few moments'); + console.log('3. Check https://status.acta.build (if available)'); +}); + +req.on('timeout', () => { + console.error('❌ Request timeout'); + req.destroy(); +}); + +req.setTimeout(10000); // 10 second timeout +req.end(); diff --git a/.agents/skills/acta/scripts/validate-credential.js b/.agents/skills/acta/scripts/validate-credential.js new file mode 100644 index 0000000..541d908 --- /dev/null +++ b/.agents/skills/acta/scripts/validate-credential.js @@ -0,0 +1,264 @@ +#!/usr/bin/env node + +/** + * Validate Verifiable Credential Structure + * + * This script validates credential JSON files against W3C VC 2.0 schema requirements. + * + * Usage: + * node scripts/validate-credential.js + * + * Example: + * node scripts/validate-credential.js assets/credential-templates/education.json + * + * What it checks: + * - Required @context field + * - Required type field includes VerifiableCredential + * - Required credentialSubject exists + * - credentialSubject.id is a valid DID + * - Valid JSON structure + */ + +const fs = require('fs'); +const path = require('path'); + +// Color codes for terminal output +const colors = { + reset: '\x1b[0m', + green: '\x1b[32m', + red: '\x1b[31m', + yellow: '\x1b[33m', + blue: '\x1b[34m', + bold: '\x1b[1m' +}; + +// Helper function for colored output +function colorize(text, color) { + return colors[color] + text + colors.reset; +} + +// Check command line arguments +if (process.argv.length < 3) { + console.log(colorize('Usage:', 'bold')); + console.log(' node validate-credential.js \n'); + console.log(colorize('Examples:', 'bold')); + console.log(' node scripts/validate-credential.js assets/credential-templates/education.json'); + console.log(' node scripts/validate-credential.js my-credential.json\n'); + process.exit(1); +} + +const filePath = process.argv[2]; + +// Check if file exists +if (!fs.existsSync(filePath)) { + console.error(colorize(`❌ File not found: ${filePath}`, 'red')); + console.log('\nMake sure the file path is correct.'); + process.exit(1); +} + +console.log(colorize('\n🔍 Validating W3C Verifiable Credential 2.0\n', 'bold')); +console.log(`File: ${filePath}\n`); + +// Read and parse credential file +let credential; +try { + const fileContent = fs.readFileSync(filePath, 'utf-8'); + credential = JSON.parse(fileContent); + console.log(colorize('✅ Valid JSON structure', 'green')); +} catch (error) { + console.error(colorize('❌ Invalid JSON file', 'red')); + console.error(`Error: ${error.message}`); + process.exit(1); +} + +console.log('\n' + colorize('Validation Checks:', 'bold')); +console.log('─────────────────────────────────────────\n'); + +// Track validation results +const checks = []; +let hasErrors = false; +let hasWarnings = false; + +// Check 1: @context field +const contextCheck = { + name: '@context includes W3C VC context', + valid: Array.isArray(credential['@context']) && + credential['@context'].includes('https://www.w3.org/2018/credentials/v1'), + required: true +}; +checks.push(contextCheck); + +if (!contextCheck.valid) { + hasErrors = true; + console.log(colorize('❌ @context field', 'red')); + console.log(' Expected: Array including "https://www.w3.org/2018/credentials/v1"'); + console.log(` Found: ${JSON.stringify(credential['@context'])}\n`); +} else { + console.log(colorize('✅ @context field', 'green')); +} + +// Check 2: type field +const typeCheck = { + name: 'type includes VerifiableCredential', + valid: Array.isArray(credential.type) && + credential.type.includes('VerifiableCredential'), + required: true +}; +checks.push(typeCheck); + +if (!typeCheck.valid) { + hasErrors = true; + console.log(colorize('❌ type field', 'red')); + console.log(' Expected: Array including "VerifiableCredential"'); + console.log(` Found: ${JSON.stringify(credential.type)}\n`); +} else { + console.log(colorize('✅ type field', 'green')); + // Show additional types + const otherTypes = credential.type.filter(t => t !== 'VerifiableCredential'); + if (otherTypes.length > 0) { + console.log(` Additional types: ${otherTypes.join(', ')}`); + } +} + +// Check 3: credentialSubject exists +const subjectCheck = { + name: 'credentialSubject exists', + valid: !!credential.credentialSubject, + required: true +}; +checks.push(subjectCheck); + +if (!subjectCheck.valid) { + hasErrors = true; + console.log(colorize('❌ credentialSubject field', 'red')); + console.log(' credentialSubject is required but missing\n'); +} else { + console.log(colorize('✅ credentialSubject exists', 'green')); +} + +// Check 4: credentialSubject.id is a DID +const didCheck = { + name: 'credentialSubject.id is a DID', + valid: credential.credentialSubject?.id?.startsWith('did:'), + required: true +}; +checks.push(didCheck); + +if (!didCheck.valid) { + hasErrors = true; + console.log(colorize('❌ credentialSubject.id', 'red')); + console.log(' Expected: DID format (e.g., "did:pkh:stellar:testnet:G...")'); + console.log(` Found: ${credential.credentialSubject?.id || 'missing'}\n`); +} else { + console.log(colorize('✅ credentialSubject.id is a DID', 'green')); + console.log(` ${credential.credentialSubject.id}`); +} + +console.log('\n' + colorize('Additional Checks:', 'bold')); +console.log('─────────────────────────────────────────\n'); + +// Optional Check: Issuer field (not required in our implementation but recommended) +if (credential.issuer) { + console.log(colorize('ℹ️ Issuer field present', 'blue')); + console.log(` ${credential.issuer}`); +} else { + console.log(colorize('⚠️ Issuer field missing (optional)', 'yellow')); + console.log(' Issuer will be set during credential issuance'); + hasWarnings = true; +} + +// Optional Check: Issuance date +if (credential.issuanceDate) { + console.log(colorize('ℹ️ Issuance date present', 'blue')); + console.log(` ${credential.issuanceDate}`); +} else { + console.log(colorize('ℹ️ Issuance date not set', 'blue')); + console.log(' Will be set automatically during issuance'); +} + +// Optional Check: Expiration date +if (credential.expirationDate) { + console.log(colorize('ℹ️ Expiration date present', 'blue')); + console.log(` ${credential.expirationDate}`); +} else { + console.log(colorize('ℹ️ No expiration date', 'blue')); + console.log(' Credential will not expire'); +} + +// Check credential subject fields +console.log('\n' + colorize('Credential Subject Fields:', 'bold')); +console.log('─────────────────────────────────────────\n'); + +if (credential.credentialSubject) { + const subjectFields = Object.keys(credential.credentialSubject).filter(key => key !== 'id'); + + if (subjectFields.length === 0) { + console.log(colorize('⚠️ No additional fields in credentialSubject', 'yellow')); + console.log(' Consider adding credential-specific data'); + hasWarnings = true; + } else { + subjectFields.forEach(field => { + const value = credential.credentialSubject[field]; + console.log(` • ${field}: ${typeof value === 'object' ? JSON.stringify(value) : value}`); + }); + } +} + +// Security warnings +console.log('\n' + colorize('Security Checks:', 'bold')); +console.log('─────────────────────────────────────────\n'); + +// Check for potentially sensitive data +const sensitiveFields = ['ssn', 'socialSecurityNumber', 'password', 'privateKey', 'secret', 'creditCard', 'bankAccount']; +const foundSensitive = []; + +function checkSensitiveData(obj, path = '') { + for (const key in obj) { + const fullPath = path ? `${path}.${key}` : key; + const lowerKey = key.toLowerCase(); + + if (sensitiveFields.some(sensitive => lowerKey.includes(sensitive))) { + foundSensitive.push({ field: fullPath, value: obj[key] }); + } + + if (typeof obj[key] === 'object' && obj[key] !== null) { + checkSensitiveData(obj[key], fullPath); + } + } +} + +checkSensitiveData(credential); + +if (foundSensitive.length > 0) { + console.log(colorize('⚠️ WARNING: Potentially sensitive data detected!', 'yellow')); + foundSensitive.forEach(item => { + console.log(` ${item.field}: ${item.value}`); + }); + console.log('\n Credentials are stored on-chain and publicly readable.'); + console.log(' Avoid including sensitive personal information without encryption.'); + hasWarnings = true; +} else { + console.log(colorize('✅ No obvious sensitive data detected', 'green')); +} + +// Final summary +console.log('\n' + colorize('═══════════════════════════════════════', 'bold')); +console.log(colorize('Summary:', 'bold')); +console.log(colorize('═══════════════════════════════════════', 'bold') + '\n'); + +const allValid = checks.every(c => c.valid); + +if (allValid && !hasWarnings) { + console.log(colorize('✅ Credential is valid and ready to use!', 'green')); + console.log('\nThis credential meets W3C VC 2.0 requirements and can be issued.\n'); + process.exit(0); +} else if (allValid && hasWarnings) { + console.log(colorize('✅ Credential is valid with warnings', 'green')); + console.log(colorize('⚠️ Review warnings above before issuing', 'yellow')); + console.log('\nThis credential meets minimum requirements but has optional issues.\n'); + process.exit(0); +} else { + console.log(colorize('❌ Credential has errors and cannot be issued', 'red')); + console.log('\nFix the errors above before attempting to issue this credential.\n'); + process.exit(1); +} diff --git a/.claude/skills/acta b/.claude/skills/acta new file mode 120000 index 0000000..379e189 --- /dev/null +++ b/.claude/skills/acta @@ -0,0 +1 @@ +../../.agents/skills/acta \ No newline at end of file diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 6f50191..0000000 --- a/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -node_modules/ -.env* -.DS_Store -*.pem - -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.pnpm-debug.log* - -*.tsbuildinfo diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100644 index c799f30..0000000 --- a/.husky/pre-commit +++ /dev/null @@ -1 +0,0 @@ -npm run format && git add -A diff --git a/.husky/pre-push b/.husky/pre-push deleted file mode 100644 index 926a37c..0000000 --- a/.husky/pre-push +++ /dev/null @@ -1 +0,0 @@ -npm run lint && npm run build diff --git a/README.md b/README.md index 7b46ab4..8737be1 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,158 @@ -# Give +# GIVE-Interactuar -Monorepo project using npm workspaces. +GIVE-Interactuar is currently best understood as a starter pack for the GIVE-Interactuar project. -## Structure +The product purpose is not fully documented in this repository yet, but the codebase already makes the technical direction clear: this repo combines a Next.js frontend, Supabase backend resources, and credential-oriented integrations around ACTA, Stellar, and Google Forms ingestion. -- `frontend/` — Next.js web application -- `.github/workflows/` — CI pipelines (lint, build) +## What This Repo Contains -## Getting started +- A single `frontend/` application built with Next.js App Router +- Supabase local config, SQL migration, seed data, and an Edge Function +- Scaffolded dashboard and verification routes +- Feature modules for entrepreneurs, credentials, verification, organizations, forms sync, and dashboard flows +- Tooling for linting, formatting, and local git hooks + +## Verified Stack + +### Frontend + +- Next.js 16 +- React 19 +- TypeScript 5 +- Tailwind CSS 4 +- React Query +- React Hook Form +- Zod + +### Backend and Data + +- Supabase SSR + Supabase JS +- Supabase local development via `frontend/supabase/` +- SQL migration and seed workflow for the initial schema +- Next.js cron route for forms sync +- Supabase Edge Function scaffold for forms sync + +### Integrations + +- `@acta-team/acta-sdk` +- Stellar SDK +- Stellar Wallets Kit +- Google Forms sync via service-account credentials + +### Tooling + +- ESLint +- Prettier +- Husky +- GitHub Actions workflows for build and lint + +## Current Building Blocks + +The codebase already includes starter modules for: + +- Dashboard pages and shared layout structure +- Entrepreneur management +- Credential flows +- Public verification flow +- Organization-related services and types +- Forms sync ingestion and mapping + +Some areas are still scaffold-level. There are explicit TODOs in orchestration and edge-function code, and the root landing page remains close to the default Next.js starter state. + +## Repository Shape + +```text +. +├── .agents/skills/ # Shared skill definitions for agent-assisted work +├── .agent/skills/ # Agent-facing skill mirror +├── .claude/skills/ # Claude-facing skill mirror +├── frontend/ +│ ├── src/app/ # Next.js app routes +│ ├── src/features/ # Feature-oriented modules +│ ├── src/lib/ # Shared services, helpers, Supabase clients +│ └── supabase/ # Local Supabase config, migrations, seed, functions +└── .github/workflows/ # Build and lint workflows +``` + +## Skills and Agentic Flow + +This repo also carries local skills for agent-assisted development. The installed skill set currently covers: + +- `acta` for ACTA credential and vault workflows +- `frontend-design` for UI implementation and polish +- `next-best-practices` for Next.js conventions +- `supabase-postgres-best-practices` for database and query guidance +- `vercel-composition-patterns` and `vercel-react-best-practices` for React architecture and performance +- `web-design-guidelines` for interface review and accessibility checks + +The intended agentic flow is simple: + +1. Inspect the repo and current branch state first. +2. Choose the relevant local skill when a task matches one of those domains. +3. Implement or review changes against the existing repo conventions. +4. Validate the result with targeted checks, then commit, push, and open a PR through the fork-based workflow when needed. + +The `.agents`, `.agent`, and `.claude` directories exist to expose the same skill inventory to different agent runtimes while keeping the project workflow consistent. + +## Contributing + +This repository follows a gitflow-style contribution model. + +### Branching model + +- `main` is reserved for stable integration milestones +- `dev` is the active integration branch +- feature work should happen in branches named like `feat/` + +### Contribution flow + +1. Fork the main repository. +2. Add the main repository as your upstream remote if needed. +3. Fetch the latest upstream changes and branch from `dev`. +4. Implement your change in a feature branch. +5. Push the branch to your fork. +6. Open a pull request from your fork back to the main repository targeting `dev`. + +### Practical notes + +- Keep pull requests focused and small when possible. +- Follow the existing conventional commit style, such as `feat:` and `chore:`. +- Before opening a PR, sync with the latest upstream `dev` so your branch is based on the current integration branch. +- If you are using an agent-assisted workflow, inspect the repo first, use the relevant local skill when appropriate, and validate changes before opening the PR. + +## Local Development + +### Prerequisites + +- Node.js 20 +- npm +- Supabase CLI + +### Run the app ```bash -npm install +cd frontend +npm ci +cp .env.example .env.local +npm run dev ``` -## Scripts +The app will start on `http://localhost:3000`. + +## Environment Overview + +The frontend expects configuration for: + +- Supabase URL, anon key, and service role key +- App base URL +- Stellar network selection +- Google Forms service-account credentials and form identifiers +- Cron authentication secret + +Use `frontend/.env.example` as the source of truth for required variables. -| Command | Description | -| ---------------- | ------------------------------------ | -| `npm run format` | Format all workspaces with Prettier | -| `npm run lint` | Lint all workspaces with ESLint | -| `npm run build` | Build all workspaces | +## Current Reading of the Repo -## Git hooks (Husky) +If you need a one-line description today, use this: -- **pre-commit** — runs `npm run format` and stages changes -- **pre-push** — runs `npm run lint` and `npm run build` +> A starter pack for GIVE-Interactuar with a Next.js frontend, Supabase backend scaffolding, and early credential and forms-sync building blocks. diff --git a/design/README_BRAND_SYSTEM.md b/design/README_BRAND_SYSTEM.md new file mode 100644 index 0000000..8bbac23 --- /dev/null +++ b/design/README_BRAND_SYSTEM.md @@ -0,0 +1,342 @@ +This document summarizes the **brand rules and design system** of Interactuar for use inside this repository. + +It is intended to be used by: + +* developers +* designers +* AI agents +* code generation tools +* UI generation tools + +This document acts as the **single source of truth** for visual and design decisions inside the repository. + +If UI, CSS, or components are generated automatically, they **must follow the rules defined here unless explicitly instructed otherwise**. + +--- + +# 1. Brand Identity + +The Interactuar logo is primarily **typographic**, where the letter **"i" acts as a symbol** connecting two points. + +This visual metaphor represents: + +* interaction +* connection +* collaboration +* business growth +* support and progress + +Design outputs should try to reflect these values through: + +* clarity +* simplicity +* professional tone +* structured layouts + +--- + +# 2. Core Brand Colors + +The brand uses **three primary colors**. + +The **deep blue must dominate the interface** and should represent **more than 60% of the visual composition**. + +## Primary Palette + +| Color | HEX | RGB | Usage | +| --------- | --------- | ---------- | -------------------- | +| Deep Blue | `#021442` | 2,20,66 | Primary brand color | +| Cyan | `#20A7D1` | 32,167,209 | Interactive elements | +| Orange | `#EA4E2F` | 234,78,47 | Alerts / CTAs | + +## Secondary Palette + +| Color | HEX | Usage | +| ------ | --------- | -------------- | +| Gray | `#808080` | Secondary text | +| Yellow | `#FFAB00` | Warnings | + +### Color Usage Rules + +Deep blue should dominate the UI. + +Use cyan for: + +* buttons +* links +* active states +* highlights + +Use orange only for: + +* important actions +* alerts +* notifications + +Secondary palette should be used **sparingly**. + +--- + +# 3. Design Tokens + +All UI implementations should derive colors from these tokens. + +```css +:root { + + /* Brand */ + --color-primary: #021442; + --color-accent: #20A7D1; + --color-danger: #EA4E2F; + + /* Supporting */ + --color-gray: #808080; + --color-warning: #FFAB00; + + /* Backgrounds */ + --bg-primary: #ffffff; + --bg-secondary: #f5f7fb; + + /* Text */ + --text-primary: #021442; + --text-secondary: #808080; + +} +``` + +AI-generated components should reference these tokens instead of hardcoded values. + +--- + +# 4. Typography + +Primary typeface: + +``` +Manrope +``` + +Recommended weights: + +``` +Light +Medium +Semibold +Bold +``` + +Fallback typeface: + +``` +Arial +``` + +Arial should only be used for: + +* documents +* emails +* Office environments + +All UI components should prioritize **Manrope**. + +--- + +# 5. Logo Usage + +Minimum sizes: + +| Medium | Minimum Size | +| ------- | ------------ | +| Print | 2.5 cm | +| Digital | 70 px | + +The logo must **never be used below these sizes**. + +--- + +# 6. Logo Protection Area + +The protection area around the logo is defined by **X**, where: + +``` +X = height of the letter "i" in the logo +``` + +A minimum margin of **X** must be maintained around the logo. + +This ensures visibility and visual clarity. + +--- + +# 7. Incorrect Logo Usage + +The following modifications are not allowed: + +* changing logo colors +* altering proportions +* separating the symbol from the typography +* adding shadows +* rearranging logo elements +* replacing the word "Interactuar" +* embedding the logo inside paragraphs or text blocks + +The logo must remain consistent across all interfaces. + +--- + +# 8. UI Guidelines + +When generating UI components, the interface should follow these principles. + +### Layout + +Prefer: + +* card-based layouts +* structured grids +* clear hierarchy +* generous spacing + +Avoid: + +* cluttered layouts +* overly decorative UI +* heavy gradients + +--- + +# 9. Backgrounds + +Recommended backgrounds: + +``` +white +very light gray +subtle tinted brand colors +``` + +Avoid dark backgrounds unless the layout explicitly requires it. + +--- + +# 10. Recommended Component System + +Interfaces should be built with reusable components. + +Recommended base components: + +``` +Button +Input +Select +Card +StatCard +Table +Badge +Modal +Tabs +Sidebar +Topbar +ChartCard +Pagination +EmptyState +``` + +Components should be **generic and reusable** rather than tied to specific pages. + +Example: + +Good + +``` +Table +``` + +Bad + +``` +ClientTable +``` + +The specific implementation should wrap the generic component. + +--- + +# 11. Dashboard Structure + +Most interfaces in this repository will follow a dashboard pattern. + +Typical structure: + +``` +Sidebar +Topbar +Content Area +Cards +Tables +Charts +``` + +Sidebar should use the **primary blue color**. + +Content areas should remain **light and neutral**. + +--- + +# 12. Visual Principles + +All generated interfaces should aim for: + +``` +clarity +consistency +readability +simplicity +professional tone +``` + +Avoid: + +``` +visual noise +too many colors +inconsistent spacing +mixed typography +``` + +--- + +# 13. AI Generation Rules + +When an AI tool generates: + +* UI +* CSS +* components +* layouts +* dashboards + +it must follow these rules: + +1. Use the brand color tokens. +2. Prefer Manrope typography. +3. Maintain a blue-dominant visual hierarchy. +4. Prefer reusable components. +5. Avoid introducing new colors unless necessary. +6. Maintain simple, clean layouts. + +If design decisions are unclear, prioritize: + +``` +simplicity +consistency +brand blue dominance +``` + +--- + +# 14. Purpose of This Document + +This file exists so that **AI systems interacting with this repository** understand the brand system and produce **consistent UI and code outputs**. + +If conflicts arise between generated code and this document, **this document takes precedence**. diff --git a/frontend/.husky/pre-commit b/frontend/.husky/pre-commit new file mode 100644 index 0000000..1d65994 --- /dev/null +++ b/frontend/.husky/pre-commit @@ -0,0 +1 @@ +cd frontend && npm run format diff --git a/frontend/.husky/pre-push b/frontend/.husky/pre-push new file mode 100644 index 0000000..492ffd9 --- /dev/null +++ b/frontend/.husky/pre-push @@ -0,0 +1 @@ +cd frontend && npm run build diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 0958dc2..5c3a31a 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,7 +8,10 @@ "name": "frontend", "version": "0.1.0", "dependencies": { + "@acta-team/acta-sdk": "^1.1.8", + "@creit.tech/stellar-wallets-kit": "^2.0.0", "@hookform/resolvers": "^3.9.0", + "@stellar/stellar-sdk": "^13.3.0", "@supabase/ssr": "^0.5.2", "@supabase/supabase-js": "^2.47.0", "@tanstack/react-query": "^5.62.0", @@ -26,11 +29,37 @@ "babel-plugin-react-compiler": "1.0.0", "eslint": "^9", "eslint-config-next": "16.1.6", + "husky": "^9.1.7", "prettier": "^3.8.1", "tailwindcss": "^4", "typescript": "^5" } }, + "node_modules/@acta-team/acta-sdk": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@acta-team/acta-sdk/-/acta-sdk-1.1.8.tgz", + "integrity": "sha512-SOzBg8e/P8x187m3MGbg3zJqVJuGcTLJXiF3yAC+078KAedy9ry2XoiDRWnpj285SsFHuiLs29wpvSDut21l7Q==", + "license": "MIT", + "dependencies": { + "axios": "^1.9.0" + }, + "peerDependencies": { + "react": ">=18.0.0 <20.0.0", + "react-dom": ">=18.0.0 <20.0.0" + } + }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz", + "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==", + "license": "MIT" + }, + "node_modules/@albedo-link/intent": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@albedo-link/intent/-/intent-0.12.0.tgz", + "integrity": "sha512-UlGBhi0qASDYOjLrOL4484vQ26Ee3zTK2oAgvPMClOs+1XNk3zbs3dECKZv+wqeSI8SkHow8mXLTa16eVh+dQA==", + "license": "MIT" + }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -100,6 +129,16 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { "version": "7.29.1", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", @@ -134,6 +173,16 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", @@ -236,6 +285,15 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", @@ -284,6 +342,163 @@ "node": ">=6.9.0" } }, + "node_modules/@creit.tech/stellar-wallets-kit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@creit.tech/stellar-wallets-kit/-/stellar-wallets-kit-2.0.0.tgz", + "integrity": "sha512-BrFMuCu4qHQSj9SjqNTtZNIpLh9bmheTD+vrrDp68X7g27/ACx0AAI55CbcXn8KzPegrAr7AOW6244n8WtgLtA==", + "license": "MIT", + "dependencies": { + "@albedo-link/intent": "0.12.0", + "@creit.tech/xbull-wallet-connect": "0.4.0", + "@hot-wallet/sdk": "1.0.11", + "@ledgerhq/hw-app-str": "7.2.8", + "@ledgerhq/hw-transport": "6.31.12", + "@ledgerhq/hw-transport-webusb": "6.29.12", + "@lobstrco/signer-extension-api": "2.0.0", + "@preact/signals": "2.3.2", + "@reown/appkit": "1.8.12", + "@stellar/freighter-api": "6.0.0", + "@stellar/stellar-base": "14.0.1", + "@trezor/connect-plugin-stellar": "9.2.3", + "@trezor/connect-web": "9.6.4", + "@twind/core": "1.1.3", + "@twind/preset-autoprefix": "1.0.7", + "@twind/preset-tailwind": "1.1.4", + "@walletconnect/sign-client": "2.23.0", + "@walletconnect/types": "2.23.0", + "htm": "3.1.1", + "preact": "^10.27.2" + } + }, + "node_modules/@creit.tech/stellar-wallets-kit/node_modules/@twind/core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@twind/core/-/core-1.1.3.tgz", + "integrity": "sha512-/B/aNFerMb2IeyjSJy3SJxqVxhrT77gBDknLMiZqXIRr4vNJqiuhx7KqUSRzDCwUmyGuogkamz+aOLzN6MeSLw==", + "funding": [ + { + "type": "Open Collective", + "url": "https://opencollective.com/twind" + }, + { + "type": "Github Sponsor", + "url": "https://github.com/sponsors/tw-in-js" + }, + { + "type": "Ko-fi", + "url": "https://ko-fi.com/twind" + } + ], + "license": "MIT", + "dependencies": { + "csstype": "^3.1.1" + }, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "typescript": "^4.8.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@creit.tech/stellar-wallets-kit/node_modules/@twind/preset-autoprefix": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@twind/preset-autoprefix/-/preset-autoprefix-1.0.7.tgz", + "integrity": "sha512-3wmHO0pG/CVxYBNZUV0tWcL7CP0wD5KpyWAQE/KOalWmOVBj+nH6j3v6Y3I3pRuMFaG5DC78qbYbhA1O11uG3w==", + "funding": [ + { + "type": "Open Collective", + "url": "https://opencollective.com/twind" + }, + { + "type": "Github Sponsor", + "url": "https://github.com/sponsors/tw-in-js" + }, + { + "type": "Ko-fi", + "url": "https://ko-fi.com/twind" + } + ], + "license": "MIT", + "dependencies": { + "style-vendorizer": "^2.2.3" + }, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "@twind/core": "^1.1.0", + "typescript": "^4.8.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@creit.tech/stellar-wallets-kit/node_modules/@twind/preset-tailwind": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@twind/preset-tailwind/-/preset-tailwind-1.1.4.tgz", + "integrity": "sha512-zv85wrP/DW4AxgWrLfH7kyGn/KJF3K04FMLVl2AjoxZGYdCaoZDkL8ma3hzaKQ+WGgBFRubuB/Ku2Rtv/wjzVw==", + "funding": [ + { + "type": "Open Collective", + "url": "https://opencollective.com/twind" + }, + { + "type": "Github Sponsor", + "url": "https://github.com/sponsors/tw-in-js" + }, + { + "type": "Ko-fi", + "url": "https://ko-fi.com/twind" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "@twind/core": "^1.1.0", + "typescript": "^4.8.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@creit.tech/stellar-wallets-kit/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@creit.tech/xbull-wallet-connect": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@creit.tech/xbull-wallet-connect/-/xbull-wallet-connect-0.4.0.tgz", + "integrity": "sha512-LrCUIqUz50SkZ4mv2hTqSmwews8CNRYVoZ9+VjLsK/1U8PByzXTxv1vZyenj6avRTG86ifpoeihz7D3D5YIDrQ==", + "dependencies": { + "rxjs": "^7.5.5", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/@emnapi/core": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", @@ -317,6 +532,18 @@ "tslib": "^2.4.0" } }, + "node_modules/@emurgo/cardano-serialization-lib-browser": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-13.2.1.tgz", + "integrity": "sha512-7RfX1gI16Vj2DgCp/ZoXqyLAakWo6+X95ku/rYGbVzuS/1etrlSiJmdbmdm+eYmszMlGQjrtOJQeVLXoj4L/Ag==", + "license": "MIT" + }, + "node_modules/@emurgo/cardano-serialization-lib-nodejs": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-13.2.0.tgz", + "integrity": "sha512-Bz1zLGEqBQ0BVkqt1OgMxdBOE3BdUWUd7Ly9Ecr/aUwkA8AV1w1XzBMe4xblmJHnB1XXNlPH4SraXCvO+q0Mig==", + "license": "MIT" + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", @@ -461,6 +688,122 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@ethereumjs/common": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-10.1.1.tgz", + "integrity": "sha512-NefPzPlrJ9w+NWVe06P+sHZQU98E1AEU9vhiHJEVT2wEcNBC1YX6hON9+smrfbn86C4U1pb2zbvjhkF+n/LKBw==", + "license": "MIT", + "dependencies": { + "@ethereumjs/util": "^10.1.1", + "eventemitter3": "^5.0.1" + } + }, + "node_modules/@ethereumjs/rlp": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-10.1.1.tgz", + "integrity": "sha512-jbnWTEwcpoY+gE0r+wxfDG9zgiu54DcTcwnc9sX3DsqKR4l5K7x2V8mQL3Et6hURa4DuT9g7z6ukwpBLFchszg==", + "license": "MPL-2.0", + "bin": { + "rlp": "bin/rlp.cjs" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@ethereumjs/tx": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-10.1.1.tgz", + "integrity": "sha512-Kz8GWIKQjEQB60ko9hsYDX3rZMHZZOTcmm6OFl855Lu3padVnf5ZactUKM6nmWPsumHED5bWDjO32novZd1zyw==", + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/common": "^10.1.1", + "@ethereumjs/rlp": "^10.1.1", + "@ethereumjs/util": "^10.1.1", + "@noble/curves": "^2.0.1", + "@noble/hashes": "^2.0.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@noble/curves": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", + "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "2.0.1" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@noble/hashes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", + "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-10.1.1.tgz", + "integrity": "sha512-r2EhaeEmLZXVs1dT2HJFQysAkr63ZWATu/9tgYSp1IlvjvwyC++DLg5kCDwMM49HBq3sOAhrPnXkoqf9DV2gbw==", + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/rlp": "^10.1.1", + "@noble/curves": "^2.0.1", + "@noble/hashes": "^2.0.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/curves": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", + "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "2.0.1" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", + "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@fivebinaries/coin-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fivebinaries/coin-selection/-/coin-selection-3.0.0.tgz", + "integrity": "sha512-h25Pn1ZA7oqQBQDodGAgIsQt66T2wDge9onBKNqE66WNWL0KJiKJbpij8YOLo5AAlEIg5IS7EB1QjBgDOIg6DQ==", + "license": "Apache-2.0", + "dependencies": { + "@emurgo/cardano-serialization-lib-browser": "^13.2.0", + "@emurgo/cardano-serialization-lib-nodejs": "13.2.0" + } + }, "node_modules/@hookform/resolvers": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.10.0.tgz", @@ -470,6 +813,22 @@ "react-hook-form": "^7.0.0" } }, + "node_modules/@hot-wallet/sdk": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@hot-wallet/sdk/-/sdk-1.0.11.tgz", + "integrity": "sha512-qRDH/4yqnRCnk7L/Qd0/LDOKDUKWcFgvf6eRELJkP0OgxIe65i/iXaG+u2lL0mLbTGkiWYk67uAvEerNUv2gzA==", + "dependencies": { + "@near-js/crypto": "^1.4.0", + "@near-js/utils": "^1.0.0", + "@near-wallet-selector/core": "^8.9.13", + "@solana/wallet-adapter-base": "^0.9.23", + "@solana/web3.js": "^1.95.0", + "borsh": "^2.0.0", + "js-sha256": "^0.11.0", + "sha1": "^1.1.1", + "uuid4": "^2.0.3" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1038,6 +1397,114 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@ledgerhq/devices": { + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.6.1.tgz", + "integrity": "sha512-PQR2fyWz7P/wMFHY9ZLz17WgFdxC/Im0RVDcWXpp24+iRQRyxhQeX2iG4mBKUzfaAW6pOIEiWt+vmJh88QP9rQ==", + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/errors": "^6.26.0", + "@ledgerhq/logs": "^6.13.0", + "rxjs": "^7.8.1", + "semver": "^7.3.5" + } + }, + "node_modules/@ledgerhq/errors": { + "version": "6.29.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.29.0.tgz", + "integrity": "sha512-mmDsGN662zd0XGKyjzSKkg+5o1/l9pvV1HkVHtbzaydvHAtRypghmVoWMY9XAQDLXiUBXGIsLal84NgmGeuKWA==", + "license": "Apache-2.0" + }, + "node_modules/@ledgerhq/hw-app-str": { + "version": "7.2.8", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-app-str/-/hw-app-str-7.2.8.tgz", + "integrity": "sha512-VHICY9jyZW5LM/8zc/mSbW7fS2bAC1OTVOtRwdQLEDn6Gv9UaNcCWjaHI1UKAnDUqYX7DUQuIPiTP1b4O+mtUQ==", + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/errors": "^6.26.0", + "@ledgerhq/hw-transport": "^6.31.12", + "bip32-path": "^0.4.2" + } + }, + "node_modules/@ledgerhq/hw-transport": { + "version": "6.31.12", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.31.12.tgz", + "integrity": "sha512-FO5LRIXYC8ELtaohlO8qK0b3TfHUNBZ3+CXKPHiHj2jJwrxPf4s5kcgBYrmzuf1C/1vfrMOjzyty6OgrMIbU6Q==", + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/devices": "8.6.1", + "@ledgerhq/errors": "^6.26.0", + "@ledgerhq/logs": "^6.13.0", + "events": "^3.3.0" + } + }, + "node_modules/@ledgerhq/hw-transport-webusb": { + "version": "6.29.12", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.29.12.tgz", + "integrity": "sha512-mMGKPYAUz9MNcURe+hSTSHwqPwCli6D0lCl15Z4hDOpcqhZ26vwoeWVKeQp53NNCetHOl0lauPkN43Gt9pIggg==", + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/devices": "8.6.1", + "@ledgerhq/errors": "^6.26.0", + "@ledgerhq/hw-transport": "^6.31.12", + "@ledgerhq/logs": "^6.13.0" + } + }, + "node_modules/@ledgerhq/logs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.14.0.tgz", + "integrity": "sha512-kJFu1+asWQmU9XlfR1RM3lYR76wuEoPyZvkI/CNjpft78BQr3+MMf3Nu77ABzcKFnhIcmAkOLlDQ6B8L6hDXHA==", + "license": "Apache-2.0" + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.5.1.tgz", + "integrity": "sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==", + "license": "BSD-3-Clause" + }, + "node_modules/@lit/react": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@lit/react/-/react-1.0.8.tgz", + "integrity": "sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw==", + "license": "BSD-3-Clause", + "optional": true, + "peerDependencies": { + "@types/react": "17 || 18 || 19" + } + }, + "node_modules/@lit/reactive-element": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.2.tgz", + "integrity": "sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.5.0" + } + }, + "node_modules/@lobstrco/signer-extension-api": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@lobstrco/signer-extension-api/-/signer-extension-api-2.0.0.tgz", + "integrity": "sha512-jwlVyzMFF296iaNgMWn1lu+EU6BeUD4mgPurEsy8EygYNCrjA8igLpsDlXhfvXhst9tX5w4wRuTDX+FZtpfCug==", + "license": "GPL-3.0" + }, + "node_modules/@mobily/ts-belt": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@mobily/ts-belt/-/ts-belt-3.13.1.tgz", + "integrity": "sha512-K5KqIhPI/EoCTbA6CGbrenM9s41OouyK8A03fGJJcla/zKucsgLbz8HNbeseoLarRPgyWJsUyCYqFhI7t3Ra9Q==", + "license": "MIT", + "engines": { + "node": ">= 10.*" + } + }, + "node_modules/@msgpack/msgpack": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-3.1.2.tgz", + "integrity": "sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ==", + "license": "ISC", + "engines": { + "node": ">= 18" + } + }, "node_modules/@napi-rs/wasm-runtime": { "version": "0.2.12", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", @@ -1051,36 +1518,288 @@ "@tybys/wasm-util": "^0.10.0" } }, - "node_modules/@next/env": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@next/env/-/env-16.1.6.tgz", - "integrity": "sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==", - "license": "MIT" + "node_modules/@near-js/accounts": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@near-js/accounts/-/accounts-1.4.1.tgz", + "integrity": "sha512-ni3QT9H3NdrbVVKyx56yvz93r89Dvpc/vgVtiIK2OdXjkK6jcj+UKMDRQ6F7rd9qJOInLkHZbVBtcR6j1CXLjw==", + "license": "ISC", + "peer": true, + "dependencies": { + "@near-js/crypto": "1.4.2", + "@near-js/providers": "1.0.3", + "@near-js/signers": "0.2.2", + "@near-js/transactions": "1.3.3", + "@near-js/types": "0.3.1", + "@near-js/utils": "1.1.0", + "@noble/hashes": "1.7.1", + "borsh": "1.0.0", + "depd": "2.0.0", + "is-my-json-valid": "^2.20.6", + "lru_map": "0.4.1", + "near-abi": "0.2.0" + } + }, + "node_modules/@near-js/accounts/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "license": "Apache-2.0", + "peer": true }, - "node_modules/@next/eslint-plugin-next": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.1.6.tgz", - "integrity": "sha512-/Qq3PTagA6+nYVfryAtQ7/9FEr/6YVyvOtl6rZnGsbReGLf0jZU6gkpr1FuChAQpvV46a78p4cmHOVP8mbfSMQ==", - "dev": true, - "license": "MIT", + "node_modules/@near-js/crypto": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@near-js/crypto/-/crypto-1.4.2.tgz", + "integrity": "sha512-GRfchsyfWvSAPA1gI9hYhw5FH94Ac1BUo+Cmp5rSJt/V0K3xVzCWgOQxvv4R3kDnWjaXJEuAmpEEnr4Bp3FWrA==", + "license": "ISC", "dependencies": { - "fast-glob": "3.3.1" + "@near-js/types": "0.3.1", + "@near-js/utils": "1.1.0", + "@noble/curves": "1.8.1", + "borsh": "1.0.0", + "randombytes": "2.1.0", + "secp256k1": "5.0.1" } }, - "node_modules/@next/swc-darwin-arm64": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.6.tgz", - "integrity": "sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" + "node_modules/@near-js/crypto/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "license": "Apache-2.0" + }, + "node_modules/@near-js/keystores": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@near-js/keystores/-/keystores-0.2.2.tgz", + "integrity": "sha512-DLhi/3a4qJUY+wgphw2Jl4S+L0AKsUYm1mtU0WxKYV5OBwjOXvbGrXNfdkheYkfh3nHwrQgtjvtszX6LrRXLLw==", + "license": "ISC", + "peer": true, + "dependencies": { + "@near-js/crypto": "1.4.2", + "@near-js/types": "0.3.1" + } + }, + "node_modules/@near-js/keystores-browser": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@near-js/keystores-browser/-/keystores-browser-0.2.2.tgz", + "integrity": "sha512-Pxqm7WGtUu6zj32vGCy9JcEDpZDSB5CCaLQDTQdF3GQyL0flyRv2I/guLAgU5FLoYxU7dJAX9mslJhPW7P2Bfw==", + "license": "ISC", + "peer": true, + "dependencies": { + "@near-js/crypto": "1.4.2", + "@near-js/keystores": "0.2.2" + } + }, + "node_modules/@near-js/keystores-node": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@near-js/keystores-node/-/keystores-node-0.1.2.tgz", + "integrity": "sha512-MWLvTszZOVziiasqIT/LYNhUyWqOJjDGlsthOsY6dTL4ZcXjjmhmzrbFydIIeQr+CcEl5wukTo68ORI9JrHl6g==", + "license": "ISC", + "peer": true, + "dependencies": { + "@near-js/crypto": "1.4.2", + "@near-js/keystores": "0.2.2" + } + }, + "node_modules/@near-js/providers": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@near-js/providers/-/providers-1.0.3.tgz", + "integrity": "sha512-VJMboL14R/+MGKnlhhE3UPXCGYvMd1PpvF9OqZ9yBbulV7QVSIdTMfY4U1NnDfmUC2S3/rhAEr+3rMrIcNS7Fg==", + "license": "ISC", + "peer": true, + "dependencies": { + "@near-js/transactions": "1.3.3", + "@near-js/types": "0.3.1", + "@near-js/utils": "1.1.0", + "borsh": "1.0.0", + "exponential-backoff": "^3.1.2" + }, + "optionalDependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/@near-js/providers/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@near-js/providers/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@near-js/signers": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@near-js/signers/-/signers-0.2.2.tgz", + "integrity": "sha512-M6ib+af9zXAPRCjH2RyIS0+RhCmd9gxzCeIkQ+I2A3zjgGiEDkBZbYso9aKj8Zh2lPKKSH7h+u8JGymMOSwgyw==", + "license": "ISC", + "peer": true, + "dependencies": { + "@near-js/crypto": "1.4.2", + "@near-js/keystores": "0.2.2", + "@noble/hashes": "1.3.3" + } + }, + "node_modules/@near-js/signers/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@near-js/transactions": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@near-js/transactions/-/transactions-1.3.3.tgz", + "integrity": "sha512-1AXD+HuxlxYQmRTLQlkVmH+RAmV3HwkAT8dyZDu+I2fK/Ec9BQHXakOJUnOBws3ihF+akQhamIBS5T0EXX/Ylw==", + "license": "ISC", + "peer": true, + "dependencies": { + "@near-js/crypto": "1.4.2", + "@near-js/signers": "0.2.2", + "@near-js/types": "0.3.1", + "@near-js/utils": "1.1.0", + "@noble/hashes": "1.7.1", + "borsh": "1.0.0" + } + }, + "node_modules/@near-js/transactions/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@near-js/types": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@near-js/types/-/types-0.3.1.tgz", + "integrity": "sha512-8qIA7ynAEAuVFNAQc0cqz2xRbfyJH3PaAG5J2MgPPhD18lu/tCGd6pzYg45hjhtiJJRFDRjh/FUWKS+ZiIIxUw==", + "license": "ISC" + }, + "node_modules/@near-js/utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@near-js/utils/-/utils-1.1.0.tgz", + "integrity": "sha512-5XWRq7xpu8Wud9pRXe2U347KXyi0mXofedUY2DQ9TaqiZUcMIaN9xj7DbCs2v6dws3pJyYrT1KWxeNp5fSaY3w==", + "license": "ISC", + "dependencies": { + "@near-js/types": "0.3.1", + "@scure/base": "^1.2.0", + "depd": "2.0.0", + "mustache": "4.0.0" + } + }, + "node_modules/@near-js/wallet-account": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@near-js/wallet-account/-/wallet-account-1.3.3.tgz", + "integrity": "sha512-GDzg/Kz0GBYF7tQfyQQQZ3vviwV8yD+8F2lYDzsWJiqIln7R1ov0zaXN4Tii86TeS21KPn2hHAsVu3Y4txa8OQ==", + "license": "ISC", + "peer": true, + "dependencies": { + "@near-js/accounts": "1.4.1", + "@near-js/crypto": "1.4.2", + "@near-js/keystores": "0.2.2", + "@near-js/providers": "1.0.3", + "@near-js/signers": "0.2.2", + "@near-js/transactions": "1.3.3", + "@near-js/types": "0.3.1", + "@near-js/utils": "1.1.0", + "borsh": "1.0.0" + } + }, + "node_modules/@near-js/wallet-account/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@near-wallet-selector/core": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/@near-wallet-selector/core/-/core-8.10.2.tgz", + "integrity": "sha512-MH8sg6XHyylq2ZXxnOjrKHMCmuRgFfpfdC816fW0R8hctZiXZ0lmfLvgG1xfA2BAxrVytiU1g3dcE97/P5cZqg==", + "dependencies": { + "borsh": "1.0.0", + "events": "3.3.0", + "js-sha256": "0.9.0", + "rxjs": "7.8.1" + }, + "peerDependencies": { + "near-api-js": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@near-wallet-selector/core/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "license": "Apache-2.0" + }, + "node_modules/@near-wallet-selector/core/node_modules/js-sha256": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==", + "license": "MIT" + }, + "node_modules/@near-wallet-selector/core/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@next/env": { + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.1.6.tgz", + "integrity": "sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.1.6.tgz", + "integrity": "sha512-/Qq3PTagA6+nYVfryAtQ7/9FEr/6YVyvOtl6rZnGsbReGLf0jZU6gkpr1FuChAQpvV46a78p4cmHOVP8mbfSMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.6.tgz", + "integrity": "sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" } }, "node_modules/@next/swc-darwin-x64": { @@ -1195,6 +1914,45 @@ "node": ">= 10" } }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.7.1" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1243,122 +2001,1371 @@ "node": ">=12.4.0" } }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@supabase/auth-js": { - "version": "2.98.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.98.0.tgz", - "integrity": "sha512-GBH361T0peHU91AQNzOlIrjUZw9TZbB9YDRiyFgk/3Kvr3/Z1NWUZ2athWTfHhwNNi8IrW00foyFxQD9IO/Trg==", + "node_modules/@phosphor-icons/webcomponents": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@phosphor-icons/webcomponents/-/webcomponents-2.1.5.tgz", + "integrity": "sha512-JcvQkZxvcX2jK+QCclm8+e8HXqtdFW9xV4/kk2aL9Y3dJA2oQVt+pzbv1orkumz3rfx4K9mn9fDoMr1He1yr7Q==", "license": "MIT", "dependencies": { - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" + "lit": "^3" } }, - "node_modules/@supabase/functions-js": { - "version": "2.98.0", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.98.0.tgz", - "integrity": "sha512-N/xEyiNU5Org+d+PNCpv+TWniAXRzxIURxDYsS/m2I/sfAB/HcM9aM2Dmf5edj5oWb9GxID1OBaZ8NMmPXL+Lg==", + "node_modules/@preact/signals": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@preact/signals/-/signals-2.3.2.tgz", + "integrity": "sha512-Q22avIn4z0BQnmFeo6Y5HCnJTo8VufN84zN51OtqeNgZOVCYgdwEOcJKVX1x/IrjRVxUnOy6Ubn7H5aVFujXaQ==", "license": "MIT", "dependencies": { - "tslib": "2.8.1" + "@preact/signals-core": "^1.12.0" }, - "engines": { - "node": ">=20.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + }, + "peerDependencies": { + "preact": ">= 10.25.0 || >=11.0.0-0" } }, - "node_modules/@supabase/postgrest-js": { - "version": "2.98.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.98.0.tgz", - "integrity": "sha512-v6e9WeZuJijzUut8HyXu6gMqWFepIbaeaMIm1uKzei4yLg9bC9OtEW9O14LE/9ezqNbSAnSLO5GtOLFdm7Bpkg==", + "node_modules/@preact/signals-core": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@preact/signals-core/-/signals-core-1.14.0.tgz", + "integrity": "sha512-AowtCcCU/33lFlh1zRFf/u+12rfrhtNakj7UpaGEsmMwUKpKWMVvcktOGcwBBNiB4lWrZWc01LhiyyzVklJyaQ==", "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", "dependencies": { - "tslib": "2.8.1" + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@reown/appkit": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/@reown/appkit/-/appkit-1.8.12.tgz", + "integrity": "sha512-DnIaJ+LEDXAd55o1wdBB8CSKLR4MLCoHQW32KkiRHmSuOsUKxjfpvtbjgl95cVXG7Co8J6Hg9tXOYLtdJDZeTQ==", + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@reown/appkit-common": "1.8.12", + "@reown/appkit-controllers": "1.8.12", + "@reown/appkit-pay": "1.8.12", + "@reown/appkit-polyfills": "1.8.12", + "@reown/appkit-scaffold-ui": "1.8.12", + "@reown/appkit-ui": "1.8.12", + "@reown/appkit-utils": "1.8.12", + "@reown/appkit-wallet": "1.8.12", + "@walletconnect/universal-provider": "2.22.4", + "bs58": "6.0.0", + "semver": "7.7.2", + "valtio": "2.1.7", + "viem": ">=2.37.9" }, - "engines": { - "node": ">=20.0.0" + "optionalDependencies": { + "@lit/react": "1.0.8" + } + }, + "node_modules/@reown/appkit-common": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.8.12.tgz", + "integrity": "sha512-rYJe4FbHA/vJT9OsvmkqKw2UCeFWcILXRDiSkM/wPatm1fbD1ZMxqlo9uNGdxJ15XzCKYZy+wAIrFtupTz12eg==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "big.js": "6.2.2", + "dayjs": "1.11.13", + "viem": ">=2.37.9" + } + }, + "node_modules/@reown/appkit-controllers": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.8.12.tgz", + "integrity": "sha512-D63A5n6VCdm6wGFqfcmUI9T66CD6rrynTPV2GGjMWKNTgf/uiNJSDwJaSPncd3S3fQh32x6WZxUsM/c3eBzyeQ==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@reown/appkit-common": "1.8.12", + "@reown/appkit-wallet": "1.8.12", + "@walletconnect/universal-provider": "2.22.4", + "valtio": "2.1.7", + "viem": ">=2.37.9" + } + }, + "node_modules/@reown/appkit-pay": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/@reown/appkit-pay/-/appkit-pay-1.8.12.tgz", + "integrity": "sha512-rjuJvxXu+6l7AAk6gLY49h7+19/zRVwDaZb9XZimDqy9TE/ASB5TG0sECLxKcqi2Ov7PkSdWyvha5dubjDkLHQ==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@reown/appkit-common": "1.8.12", + "@reown/appkit-controllers": "1.8.12", + "@reown/appkit-ui": "1.8.12", + "@reown/appkit-utils": "1.8.12", + "lit": "3.3.0", + "valtio": "2.1.7" + } + }, + "node_modules/@reown/appkit-polyfills": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.8.12.tgz", + "integrity": "sha512-ieGi0vDnXzsL0h0p6Xk8+5D1xouIFbMitmLcccTeO4UEZfvp7PNYJvBvRaq3F184E11CmKz9mey+b7JYLykPyQ==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "buffer": "6.0.3" + } + }, + "node_modules/@reown/appkit-scaffold-ui": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.8.12.tgz", + "integrity": "sha512-XGmy6s9bTb3lOz+chsB/WFPVbOIX6KjawOTBr2zaLJZbbmoQszfret4IlDCxLe069p5zbTvyPAiw43w5pXTefw==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@reown/appkit-common": "1.8.12", + "@reown/appkit-controllers": "1.8.12", + "@reown/appkit-ui": "1.8.12", + "@reown/appkit-utils": "1.8.12", + "@reown/appkit-wallet": "1.8.12", + "lit": "3.3.0" + } + }, + "node_modules/@reown/appkit-ui": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.8.12.tgz", + "integrity": "sha512-Ozn5JRkWpLDJLLIHMqgJzgsTla0g1jdn423SvYL3IuoUeJdaLFkO7DfbnezFJlpZJkgSckWEnrrQFHlMDXdzMQ==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@phosphor-icons/webcomponents": "2.1.5", + "@reown/appkit-common": "1.8.12", + "@reown/appkit-controllers": "1.8.12", + "@reown/appkit-wallet": "1.8.12", + "lit": "3.3.0", + "qrcode": "1.5.3" + } + }, + "node_modules/@reown/appkit-utils": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.8.12.tgz", + "integrity": "sha512-XSzq42sHO9aP/YUwhrwtGd7poWFgCwgLH4OUmLdZkiTLB5+c7fp/sR4CbmaEDxkyX7O6VMxaAYDaUOBomdhRyw==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@reown/appkit-common": "1.8.12", + "@reown/appkit-controllers": "1.8.12", + "@reown/appkit-polyfills": "1.8.12", + "@reown/appkit-wallet": "1.8.12", + "@wallet-standard/wallet": "1.1.0", + "@walletconnect/logger": "^3.0.0", + "@walletconnect/universal-provider": "2.22.4", + "valtio": "2.1.7", + "viem": ">=2.37.9" + }, + "peerDependencies": { + "valtio": "2.1.7" } }, - "node_modules/@supabase/realtime-js": { - "version": "2.98.0", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.98.0.tgz", - "integrity": "sha512-rOWt28uGyFipWOSd+n0WVMr9kUXiWaa7J4hvyLCIHjRFqWm1z9CaaKAoYyfYMC1Exn3WT8WePCgiVhlAtWC2yw==", - "license": "MIT", + "node_modules/@reown/appkit-wallet": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.8.12.tgz", + "integrity": "sha512-HvRyHvCFZlVYfzO1viXYKk8mPxZUrrQuFV3DjfARGZdhoSJ2BmR3qLcpAy+1waTLIlBUmhPggYnEnKpUwCfQGw==", + "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@types/phoenix": "^1.6.6", - "@types/ws": "^8.18.1", - "tslib": "2.8.1", - "ws": "^8.18.2" + "@reown/appkit-common": "1.8.12", + "@reown/appkit-polyfills": "1.8.12", + "@walletconnect/logger": "^3.0.0", + "zod": "3.22.4" + } + }, + "node_modules/@reown/appkit-wallet/node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@reown/appkit/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=20.0.0" + "node": ">=10" } }, - "node_modules/@supabase/ssr": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@supabase/ssr/-/ssr-0.5.2.tgz", - "integrity": "sha512-n3plRhr2Bs8Xun1o4S3k1CDv17iH5QY9YcoEvXX3bxV1/5XSasA0mNXYycFmADIdtdE6BG9MRjP5CGIs8qxC8A==", + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", "license": "MIT", "dependencies": { - "@types/cookie": "^0.6.0", - "cookie": "^0.7.0" + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" }, - "peerDependencies": { - "@supabase/supabase-js": "^2.43.4" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@supabase/storage-js": { - "version": "2.98.0", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.98.0.tgz", - "integrity": "sha512-tzr2mG+v7ILSAZSfZMSL9OPyIH4z1ikgQ8EcQTKfMRz4EwmlFt3UnJaGzSOxyvF5b+fc9So7qdSUWTqGgeLokQ==", + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "license": "MIT", "dependencies": { - "iceberg-js": "^0.8.1", - "tslib": "2.8.1" + "@noble/hashes": "1.8.0" }, "engines": { - "node": ">=20.0.0" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@supabase/supabase-js": { - "version": "2.98.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.98.0.tgz", - "integrity": "sha512-Ohc97CtInLwZyiSASz7tT9/Abm/vqnIbO9REp+PivVUII8UZsuI3bngRQnYgJdFoOIwvaEII1fX1qy8x0CyNiw==", + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "license": "MIT", - "dependencies": { - "@supabase/auth-js": "2.98.0", - "@supabase/functions-js": "2.98.0", - "@supabase/postgrest-js": "2.98.0", - "@supabase/realtime-js": "2.98.0", - "@supabase/storage-js": "2.98.0" - }, "engines": { - "node": ">=20.0.0" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "license": "Apache-2.0", + "node_modules/@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "license": "MIT", "dependencies": { - "tslib": "^2.8.0" + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@tailwindcss/node": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.1.tgz", - "integrity": "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==", - "dev": true, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "license": "MIT", - "dependencies": { + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.33.22", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.33.22.tgz", + "integrity": "sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==", + "license": "MIT" + }, + "node_modules/@solana-program/compute-budget": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@solana-program/compute-budget/-/compute-budget-0.8.0.tgz", + "integrity": "sha512-qPKxdxaEsFxebZ4K5RPuy7VQIm/tfJLa1+Nlt3KNA8EYQkz9Xm8htdoEaXVrer9kpgzzp9R3I3Bh6omwCM06tQ==", + "license": "Apache-2.0", + "peerDependencies": { + "@solana/kit": "^2.1.0" + } + }, + "node_modules/@solana-program/stake": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@solana-program/stake/-/stake-0.2.1.tgz", + "integrity": "sha512-ssNPsJv9XHaA+L7ihzmWGYcm/+XYURQ8UA3wQMKf6ccEHyHOUgoglkkDU/BoA0+wul6HxZUN0tHFymC0qFw6sg==", + "license": "MIT", + "peerDependencies": { + "@solana/kit": "^2.1.0" + } + }, + "node_modules/@solana-program/system": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@solana-program/system/-/system-0.7.0.tgz", + "integrity": "sha512-FKTBsKHpvHHNc1ATRm7SlC5nF/VdJtOSjldhcyfMN9R7xo712Mo2jHIzvBgn8zQO5Kg0DcWuKB7268Kv1ocicw==", + "license": "Apache-2.0", + "peerDependencies": { + "@solana/kit": "^2.1.0" + } + }, + "node_modules/@solana-program/token": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@solana-program/token/-/token-0.5.1.tgz", + "integrity": "sha512-bJvynW5q9SFuVOZ5vqGVkmaPGA0MCC+m9jgJj1nk5m20I389/ms69ASnhWGoOPNcie7S9OwBX0gTj2fiyWpfag==", + "license": "Apache-2.0", + "peerDependencies": { + "@solana/kit": "^2.1.0" + } + }, + "node_modules/@solana-program/token-2022": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@solana-program/token-2022/-/token-2022-0.4.2.tgz", + "integrity": "sha512-zIpR5t4s9qEU3hZKupzIBxJ6nUV5/UVyIT400tu9vT1HMs5JHxaTTsb5GUhYjiiTvNwU0MQavbwc4Dl29L0Xvw==", + "license": "Apache-2.0", + "peerDependencies": { + "@solana/kit": "^2.1.0", + "@solana/sysvars": "^2.1.0" + } + }, + "node_modules/@solana/accounts": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/accounts/-/accounts-2.3.0.tgz", + "integrity": "sha512-QgQTj404Z6PXNOyzaOpSzjgMOuGwG8vC66jSDB+3zHaRcEPRVRd2sVSrd1U6sHtnV3aiaS6YyDuPQMheg4K2jw==", + "license": "MIT", + "dependencies": { + "@solana/addresses": "2.3.0", + "@solana/codecs-core": "2.3.0", + "@solana/codecs-strings": "2.3.0", + "@solana/errors": "2.3.0", + "@solana/rpc-spec": "2.3.0", + "@solana/rpc-types": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/addresses": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/addresses/-/addresses-2.3.0.tgz", + "integrity": "sha512-ypTNkY2ZaRFpHLnHAgaW8a83N0/WoqdFvCqf4CQmnMdFsZSdC7qOwcbd7YzdaQn9dy+P2hybewzB+KP7LutxGA==", + "license": "MIT", + "dependencies": { + "@solana/assertions": "2.3.0", + "@solana/codecs-core": "2.3.0", + "@solana/codecs-strings": "2.3.0", + "@solana/errors": "2.3.0", + "@solana/nominal-types": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/assertions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/assertions/-/assertions-2.3.0.tgz", + "integrity": "sha512-Ekoet3khNg3XFLN7MIz8W31wPQISpKUGDGTylLptI+JjCDWx3PIa88xjEMqFo02WJ8sBj2NLV64Xg1sBcsHjZQ==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/buffer-layout": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", + "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", + "license": "MIT", + "dependencies": { + "buffer": "~6.0.3" + }, + "engines": { + "node": ">=5.10" + } + }, + "node_modules/@solana/codecs": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-2.3.0.tgz", + "integrity": "sha512-JVqGPkzoeyU262hJGdH64kNLH0M+Oew2CIPOa/9tR3++q2pEd4jU2Rxdfye9sd0Ce3XJrR5AIa8ZfbyQXzjh+g==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.3.0", + "@solana/codecs-data-structures": "2.3.0", + "@solana/codecs-numbers": "2.3.0", + "@solana/codecs-strings": "2.3.0", + "@solana/options": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/codecs-core": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.3.0.tgz", + "integrity": "sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/codecs-data-structures": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.3.0.tgz", + "integrity": "sha512-qvU5LE5DqEdYMYgELRHv+HMOx73sSoV1ZZkwIrclwUmwTbTaH8QAJURBj0RhQ/zCne7VuLLOZFFGv6jGigWhSw==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.3.0", + "@solana/codecs-numbers": "2.3.0", + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/codecs-numbers": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz", + "integrity": "sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.3.0", + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/codecs-strings": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.3.0.tgz", + "integrity": "sha512-y5pSBYwzVziXu521hh+VxqUtp0hYGTl1eWGoc1W+8mdvBdC1kTqm/X7aYQw33J42hw03JjryvYOvmGgk3Qz/Ug==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.3.0", + "@solana/codecs-numbers": "2.3.0", + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "fastestsmallesttextencoderdecoder": "^1.0.22", + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/errors": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.3.0.tgz", + "integrity": "sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==", + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "commander": "^14.0.0" + }, + "bin": { + "errors": "bin/cli.mjs" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/fast-stable-stringify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/fast-stable-stringify/-/fast-stable-stringify-2.3.0.tgz", + "integrity": "sha512-KfJPrMEieUg6D3hfQACoPy0ukrAV8Kio883llt/8chPEG3FVTX9z/Zuf4O01a15xZmBbmQ7toil2Dp0sxMJSxw==", + "license": "MIT", + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/functional": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/functional/-/functional-2.3.0.tgz", + "integrity": "sha512-AgsPh3W3tE+nK3eEw/W9qiSfTGwLYEvl0rWaxHht/lRcuDVwfKRzeSa5G79eioWFFqr+pTtoCr3D3OLkwKz02Q==", + "license": "MIT", + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/instructions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/instructions/-/instructions-2.3.0.tgz", + "integrity": "sha512-PLMsmaIKu7hEAzyElrk2T7JJx4D+9eRwebhFZpy2PXziNSmFF929eRHKUsKqBFM3cYR1Yy3m6roBZfA+bGE/oQ==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.3.0", + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/keys": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/keys/-/keys-2.3.0.tgz", + "integrity": "sha512-ZVVdga79pNH+2pVcm6fr2sWz9HTwfopDVhYb0Lh3dh+WBmJjwkabXEIHey2rUES7NjFa/G7sV8lrUn/v8LDCCQ==", + "license": "MIT", + "dependencies": { + "@solana/assertions": "2.3.0", + "@solana/codecs-core": "2.3.0", + "@solana/codecs-strings": "2.3.0", + "@solana/errors": "2.3.0", + "@solana/nominal-types": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/kit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/kit/-/kit-2.3.0.tgz", + "integrity": "sha512-sb6PgwoW2LjE5oTFu4lhlS/cGt/NB3YrShEyx7JgWFWysfgLdJnhwWThgwy/4HjNsmtMrQGWVls0yVBHcMvlMQ==", + "license": "MIT", + "dependencies": { + "@solana/accounts": "2.3.0", + "@solana/addresses": "2.3.0", + "@solana/codecs": "2.3.0", + "@solana/errors": "2.3.0", + "@solana/functional": "2.3.0", + "@solana/instructions": "2.3.0", + "@solana/keys": "2.3.0", + "@solana/programs": "2.3.0", + "@solana/rpc": "2.3.0", + "@solana/rpc-parsed-types": "2.3.0", + "@solana/rpc-spec-types": "2.3.0", + "@solana/rpc-subscriptions": "2.3.0", + "@solana/rpc-types": "2.3.0", + "@solana/signers": "2.3.0", + "@solana/sysvars": "2.3.0", + "@solana/transaction-confirmation": "2.3.0", + "@solana/transaction-messages": "2.3.0", + "@solana/transactions": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/nominal-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/nominal-types/-/nominal-types-2.3.0.tgz", + "integrity": "sha512-uKlMnlP4PWW5UTXlhKM8lcgIaNj8dvd8xO4Y9l+FVvh9RvW2TO0GwUO6JCo7JBzCB0PSqRJdWWaQ8pu1Ti/OkA==", + "license": "MIT", + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/options": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.3.0.tgz", + "integrity": "sha512-PPnnZBRCWWoZQ11exPxf//DRzN2C6AoFsDI/u2AsQfYih434/7Kp4XLpfOMT/XESi+gdBMFNNfbES5zg3wAIkw==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.3.0", + "@solana/codecs-data-structures": "2.3.0", + "@solana/codecs-numbers": "2.3.0", + "@solana/codecs-strings": "2.3.0", + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/programs": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/programs/-/programs-2.3.0.tgz", + "integrity": "sha512-UXKujV71VCI5uPs+cFdwxybtHZAIZyQkqDiDnmK+DawtOO9mBn4Nimdb/6RjR2CXT78mzO9ZCZ3qfyX+ydcB7w==", + "license": "MIT", + "dependencies": { + "@solana/addresses": "2.3.0", + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/promises": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/promises/-/promises-2.3.0.tgz", + "integrity": "sha512-GjVgutZKXVuojd9rWy1PuLnfcRfqsaCm7InCiZc8bqmJpoghlyluweNc7ml9Y5yQn1P2IOyzh9+p/77vIyNybQ==", + "license": "MIT", + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/rpc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/rpc/-/rpc-2.3.0.tgz", + "integrity": "sha512-ZWN76iNQAOCpYC7yKfb3UNLIMZf603JckLKOOLTHuy9MZnTN8XV6uwvDFhf42XvhglgUjGCEnbUqWtxQ9pa/pQ==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.3.0", + "@solana/fast-stable-stringify": "2.3.0", + "@solana/functional": "2.3.0", + "@solana/rpc-api": "2.3.0", + "@solana/rpc-spec": "2.3.0", + "@solana/rpc-spec-types": "2.3.0", + "@solana/rpc-transformers": "2.3.0", + "@solana/rpc-transport-http": "2.3.0", + "@solana/rpc-types": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/rpc-api": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/rpc-api/-/rpc-api-2.3.0.tgz", + "integrity": "sha512-UUdiRfWoyYhJL9PPvFeJr4aJ554ob2jXcpn4vKmRVn9ire0sCbpQKYx6K8eEKHZWXKrDW8IDspgTl0gT/aJWVg==", + "license": "MIT", + "dependencies": { + "@solana/addresses": "2.3.0", + "@solana/codecs-core": "2.3.0", + "@solana/codecs-strings": "2.3.0", + "@solana/errors": "2.3.0", + "@solana/keys": "2.3.0", + "@solana/rpc-parsed-types": "2.3.0", + "@solana/rpc-spec": "2.3.0", + "@solana/rpc-transformers": "2.3.0", + "@solana/rpc-types": "2.3.0", + "@solana/transaction-messages": "2.3.0", + "@solana/transactions": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/rpc-parsed-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/rpc-parsed-types/-/rpc-parsed-types-2.3.0.tgz", + "integrity": "sha512-B5pHzyEIbBJf9KHej+zdr5ZNAdSvu7WLU2lOUPh81KHdHQs6dEb310LGxcpCc7HVE8IEdO20AbckewDiAN6OCg==", + "license": "MIT", + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/rpc-spec": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/rpc-spec/-/rpc-spec-2.3.0.tgz", + "integrity": "sha512-fA2LMX4BMixCrNB2n6T83AvjZ3oUQTu7qyPLyt8gHQaoEAXs8k6GZmu6iYcr+FboQCjUmRPgMaABbcr9j2J9Sw==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.3.0", + "@solana/rpc-spec-types": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/rpc-spec-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/rpc-spec-types/-/rpc-spec-types-2.3.0.tgz", + "integrity": "sha512-xQsb65lahjr8Wc9dMtP7xa0ZmDS8dOE2ncYjlvfyw/h4mpdXTUdrSMi6RtFwX33/rGuztQ7Hwaid5xLNSLvsFQ==", + "license": "MIT", + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/rpc-subscriptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions/-/rpc-subscriptions-2.3.0.tgz", + "integrity": "sha512-Uyr10nZKGVzvCOqwCZgwYrzuoDyUdwtgQRefh13pXIrdo4wYjVmoLykH49Omt6abwStB0a4UL5gX9V4mFdDJZg==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.3.0", + "@solana/fast-stable-stringify": "2.3.0", + "@solana/functional": "2.3.0", + "@solana/promises": "2.3.0", + "@solana/rpc-spec-types": "2.3.0", + "@solana/rpc-subscriptions-api": "2.3.0", + "@solana/rpc-subscriptions-channel-websocket": "2.3.0", + "@solana/rpc-subscriptions-spec": "2.3.0", + "@solana/rpc-transformers": "2.3.0", + "@solana/rpc-types": "2.3.0", + "@solana/subscribable": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/rpc-subscriptions-api": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-2.3.0.tgz", + "integrity": "sha512-9mCjVbum2Hg9KGX3LKsrI5Xs0KX390lS+Z8qB80bxhar6MJPugqIPH8uRgLhCW9GN3JprAfjRNl7our8CPvsPQ==", + "license": "MIT", + "dependencies": { + "@solana/addresses": "2.3.0", + "@solana/keys": "2.3.0", + "@solana/rpc-subscriptions-spec": "2.3.0", + "@solana/rpc-transformers": "2.3.0", + "@solana/rpc-types": "2.3.0", + "@solana/transaction-messages": "2.3.0", + "@solana/transactions": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/rpc-subscriptions-channel-websocket": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-channel-websocket/-/rpc-subscriptions-channel-websocket-2.3.0.tgz", + "integrity": "sha512-2oL6ceFwejIgeWzbNiUHI2tZZnaOxNTSerszcin7wYQwijxtpVgUHiuItM/Y70DQmH9sKhmikQp+dqeGalaJxw==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.3.0", + "@solana/functional": "2.3.0", + "@solana/rpc-subscriptions-spec": "2.3.0", + "@solana/subscribable": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3", + "ws": "^8.18.0" + } + }, + "node_modules/@solana/rpc-subscriptions-spec": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-spec/-/rpc-subscriptions-spec-2.3.0.tgz", + "integrity": "sha512-rdmVcl4PvNKQeA2l8DorIeALCgJEMSu7U8AXJS1PICeb2lQuMeaR+6cs/iowjvIB0lMVjYN2sFf6Q3dJPu6wWg==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.3.0", + "@solana/promises": "2.3.0", + "@solana/rpc-spec-types": "2.3.0", + "@solana/subscribable": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/rpc-transformers": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/rpc-transformers/-/rpc-transformers-2.3.0.tgz", + "integrity": "sha512-UuHYK3XEpo9nMXdjyGKkPCOr7WsZsxs7zLYDO1A5ELH3P3JoehvrDegYRAGzBS2VKsfApZ86ZpJToP0K3PhmMA==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.3.0", + "@solana/functional": "2.3.0", + "@solana/nominal-types": "2.3.0", + "@solana/rpc-spec-types": "2.3.0", + "@solana/rpc-types": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/rpc-transport-http": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/rpc-transport-http/-/rpc-transport-http-2.3.0.tgz", + "integrity": "sha512-HFKydmxGw8nAF5N+S0NLnPBDCe5oMDtI2RAmW8DMqP4U3Zxt2XWhvV1SNkAldT5tF0U1vP+is6fHxyhk4xqEvg==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.3.0", + "@solana/rpc-spec": "2.3.0", + "@solana/rpc-spec-types": "2.3.0", + "undici-types": "^7.11.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/rpc-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/rpc-types/-/rpc-types-2.3.0.tgz", + "integrity": "sha512-O09YX2hED2QUyGxrMOxQ9GzH1LlEwwZWu69QbL4oYmIf6P5dzEEHcqRY6L1LsDVqc/dzAdEs/E1FaPrcIaIIPw==", + "license": "MIT", + "dependencies": { + "@solana/addresses": "2.3.0", + "@solana/codecs-core": "2.3.0", + "@solana/codecs-numbers": "2.3.0", + "@solana/codecs-strings": "2.3.0", + "@solana/errors": "2.3.0", + "@solana/nominal-types": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/signers": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/signers/-/signers-2.3.0.tgz", + "integrity": "sha512-OSv6fGr/MFRx6J+ZChQMRqKNPGGmdjkqarKkRzkwmv7v8quWsIRnJT5EV8tBy3LI4DLO/A8vKiNSPzvm1TdaiQ==", + "license": "MIT", + "dependencies": { + "@solana/addresses": "2.3.0", + "@solana/codecs-core": "2.3.0", + "@solana/errors": "2.3.0", + "@solana/instructions": "2.3.0", + "@solana/keys": "2.3.0", + "@solana/nominal-types": "2.3.0", + "@solana/transaction-messages": "2.3.0", + "@solana/transactions": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/subscribable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/subscribable/-/subscribable-2.3.0.tgz", + "integrity": "sha512-DkgohEDbMkdTWiKAoatY02Njr56WXx9e/dKKfmne8/Ad6/2llUIrax78nCdlvZW9quXMaXPTxZvdQqo9N669Og==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/sysvars": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/sysvars/-/sysvars-2.3.0.tgz", + "integrity": "sha512-LvjADZrpZ+CnhlHqfI5cmsRzX9Rpyb1Ox2dMHnbsRNzeKAMhu9w4ZBIaeTdO322zsTr509G1B+k2ABD3whvUBA==", + "license": "MIT", + "dependencies": { + "@solana/accounts": "2.3.0", + "@solana/codecs": "2.3.0", + "@solana/errors": "2.3.0", + "@solana/rpc-types": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/transaction-confirmation": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/transaction-confirmation/-/transaction-confirmation-2.3.0.tgz", + "integrity": "sha512-UiEuiHCfAAZEKdfne/XljFNJbsKAe701UQHKXEInYzIgBjRbvaeYZlBmkkqtxwcasgBTOmEaEKT44J14N9VZDw==", + "license": "MIT", + "dependencies": { + "@solana/addresses": "2.3.0", + "@solana/codecs-strings": "2.3.0", + "@solana/errors": "2.3.0", + "@solana/keys": "2.3.0", + "@solana/promises": "2.3.0", + "@solana/rpc": "2.3.0", + "@solana/rpc-subscriptions": "2.3.0", + "@solana/rpc-types": "2.3.0", + "@solana/transaction-messages": "2.3.0", + "@solana/transactions": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/transaction-messages": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/transaction-messages/-/transaction-messages-2.3.0.tgz", + "integrity": "sha512-bgqvWuy3MqKS5JdNLH649q+ngiyOu5rGS3DizSnWwYUd76RxZl1kN6CoqHSrrMzFMvis6sck/yPGG3wqrMlAww==", + "license": "MIT", + "dependencies": { + "@solana/addresses": "2.3.0", + "@solana/codecs-core": "2.3.0", + "@solana/codecs-data-structures": "2.3.0", + "@solana/codecs-numbers": "2.3.0", + "@solana/errors": "2.3.0", + "@solana/functional": "2.3.0", + "@solana/instructions": "2.3.0", + "@solana/nominal-types": "2.3.0", + "@solana/rpc-types": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/transactions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/transactions/-/transactions-2.3.0.tgz", + "integrity": "sha512-LnTvdi8QnrQtuEZor5Msje61sDpPstTVwKg4y81tNxDhiyomjuvnSNLAq6QsB9gIxUqbNzPZgOG9IU4I4/Uaug==", + "license": "MIT", + "dependencies": { + "@solana/addresses": "2.3.0", + "@solana/codecs-core": "2.3.0", + "@solana/codecs-data-structures": "2.3.0", + "@solana/codecs-numbers": "2.3.0", + "@solana/codecs-strings": "2.3.0", + "@solana/errors": "2.3.0", + "@solana/functional": "2.3.0", + "@solana/instructions": "2.3.0", + "@solana/keys": "2.3.0", + "@solana/nominal-types": "2.3.0", + "@solana/rpc-types": "2.3.0", + "@solana/transaction-messages": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/wallet-adapter-base": { + "version": "0.9.27", + "resolved": "https://registry.npmjs.org/@solana/wallet-adapter-base/-/wallet-adapter-base-0.9.27.tgz", + "integrity": "sha512-kXjeNfNFVs/NE9GPmysBRKQ/nf+foSaq3kfVSeMcO/iVgigyRmB551OjU3WyAolLG/1jeEfKLqF9fKwMCRkUqg==", + "license": "Apache-2.0", + "dependencies": { + "@solana/wallet-standard-features": "^1.3.0", + "@wallet-standard/base": "^1.1.0", + "@wallet-standard/features": "^1.1.0", + "eventemitter3": "^5.0.1" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "@solana/web3.js": "^1.98.0" + } + }, + "node_modules/@solana/wallet-standard-features": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@solana/wallet-standard-features/-/wallet-standard-features-1.3.0.tgz", + "integrity": "sha512-ZhpZtD+4VArf6RPitsVExvgkF+nGghd1rzPjd97GmBximpnt1rsUxMOEyoIEuH3XBxPyNB6Us7ha7RHWQR+abg==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/base": "^1.1.0", + "@wallet-standard/features": "^1.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@solana/web3.js": { + "version": "1.98.4", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.98.4.tgz", + "integrity": "sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@solana/buffer-layout": "^4.0.1", + "@solana/codecs-numbers": "^2.1.0", + "agentkeepalive": "^4.5.0", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "buffer": "6.0.3", + "fast-stable-stringify": "^1.0.0", + "jayson": "^4.1.1", + "node-fetch": "^2.7.0", + "rpc-websockets": "^9.0.2", + "superstruct": "^2.0.2" + } + }, + "node_modules/@solana/web3.js/node_modules/base-x": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@solana/web3.js/node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, + "node_modules/@solana/web3.js/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@stellar/freighter-api": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@stellar/freighter-api/-/freighter-api-6.0.0.tgz", + "integrity": "sha512-8CTQcKQmTq/wL715ZUzn1x1POpR0eYhYPKEiaeA7AT0WYBOauOGTxfWPFtSidX3ohAlJZP5HFXy1kG29cVjqxw==", + "license": "Apache-2.0", + "dependencies": { + "buffer": "6.0.3", + "semver": "7.7.1" + } + }, + "node_modules/@stellar/freighter-api/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@stellar/js-xdr": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@stellar/js-xdr/-/js-xdr-3.1.2.tgz", + "integrity": "sha512-VVolPL5goVEIsvuGqDc5uiKxV03lzfWdvYg1KikvwheDmTBO68CKDji3bAZ/kppZrx5iTA8z3Ld5yuytcvhvOQ==", + "license": "Apache-2.0" + }, + "node_modules/@stellar/stellar-base": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@stellar/stellar-base/-/stellar-base-14.0.1.tgz", + "integrity": "sha512-mI6Kjh9hGWDA1APawQTtCbR7702dNT/8Te1uuRFPqqdoAKBk3WpXOQI3ZSZO+5olW7BSHpmVG5KBPZpIpQxIvw==", + "license": "Apache-2.0", + "dependencies": { + "@noble/curves": "^1.9.6", + "@stellar/js-xdr": "^3.1.2", + "base32.js": "^0.1.0", + "bignumber.js": "^9.3.1", + "buffer": "^6.0.3", + "sha.js": "^2.4.12" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@stellar/stellar-base/node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@stellar/stellar-base/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@stellar/stellar-sdk": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/@stellar/stellar-sdk/-/stellar-sdk-13.3.0.tgz", + "integrity": "sha512-8+GHcZLp+mdin8gSjcgfb/Lb6sSMYRX6Nf/0LcSJxvjLQR0XHpjGzOiRbYb2jSXo51EnA6kAV5j+4Pzh5OUKUg==", + "license": "Apache-2.0", + "dependencies": { + "@stellar/stellar-base": "^13.1.0", + "axios": "^1.8.4", + "bignumber.js": "^9.3.0", + "eventsource": "^2.0.2", + "feaxios": "^0.0.23", + "randombytes": "^2.1.0", + "toml": "^3.0.0", + "urijs": "^1.19.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@stellar/stellar-sdk/node_modules/@stellar/stellar-base": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@stellar/stellar-base/-/stellar-base-13.1.0.tgz", + "integrity": "sha512-90EArG+eCCEzDGj3OJNoCtwpWDwxjv+rs/RNPhvg4bulpjN/CSRj+Ys/SalRcfM4/WRC5/qAfjzmJBAuquWhkA==", + "license": "Apache-2.0", + "dependencies": { + "@stellar/js-xdr": "^3.1.2", + "base32.js": "^0.1.0", + "bignumber.js": "^9.1.2", + "buffer": "^6.0.3", + "sha.js": "^2.3.6", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "sodium-native": "^4.3.3" + } + }, + "node_modules/@supabase/auth-js": { + "version": "2.99.0", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.99.0.tgz", + "integrity": "sha512-tHiIST/OEoLmWBE+3X69xRY5srJM/lL86KltmMlIfDo9ePJLo14vQQV9T4NF+P+MoGhCwQL1GTmk51zuAFMXKw==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.99.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.99.0.tgz", + "integrity": "sha512-zA9oad6EqGwMLLu2LfP1bXbqKcJGiotAdbdTfZG7YS7619YZQAEgejj9mp+E5vglKE1yMWbKK+S1J3PbuUtgLg==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/postgrest-js": { + "version": "2.99.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.99.0.tgz", + "integrity": "sha512-8qfOMi2pu9y0IQhUAeFqjrvR49G4ELGevXCWV9qAHXFQ/h2FFh0I8PYjFQj4rHcHSq6hrpozDnS1vbQU8NAQ/A==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.99.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.99.0.tgz", + "integrity": "sha512-7nFTZhNeANR7FvEY6PfWLCfE8dHqcaJd9SuR7IPEZvBPG9K4uEHMivpjZx4NWRSU7Eji7ZbKy2LG+cJ48DhwHg==", + "license": "MIT", + "dependencies": { + "@types/phoenix": "^1.6.6", + "@types/ws": "^8.18.1", + "tslib": "2.8.1", + "ws": "^8.18.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/ssr": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@supabase/ssr/-/ssr-0.5.2.tgz", + "integrity": "sha512-n3plRhr2Bs8Xun1o4S3k1CDv17iH5QY9YcoEvXX3bxV1/5XSasA0mNXYycFmADIdtdE6BG9MRjP5CGIs8qxC8A==", + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^0.7.0" + }, + "peerDependencies": { + "@supabase/supabase-js": "^2.43.4" + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.99.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.99.0.tgz", + "integrity": "sha512-mAEEbfsght5EEALejYrwAP9k8sFBGjfMZT8n4SyMXk2iYuWVeRMs1kA/uKg0uDMctWdZ0bL+L4jZzksUJpCjMA==", + "license": "MIT", + "dependencies": { + "iceberg-js": "^0.8.1", + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.99.0", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.99.0.tgz", + "integrity": "sha512-SP9Sn9tsHDB7N4u2gT13rdeZJewE4xibAxasG7vOz+fYi92+XkMMbWNx0uGK53zKTnAnvTs16isRooyBy4sn5w==", + "license": "MIT", + "dependencies": { + "@supabase/auth-js": "2.99.0", + "@supabase/functions-js": "2.99.0", + "@supabase/postgrest-js": "2.99.0", + "@supabase/realtime-js": "2.99.0", + "@supabase/storage-js": "2.99.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.1.tgz", + "integrity": "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==", + "dev": true, + "license": "MIT", + "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", @@ -1394,25 +3401,191 @@ }, "node_modules/@tailwindcss/oxide-android-arm64": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.1.tgz", - "integrity": "sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.1.tgz", + "integrity": "sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.1.tgz", + "integrity": "sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.1.tgz", + "integrity": "sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.1.tgz", + "integrity": "sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.1.tgz", + "integrity": "sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.1.tgz", + "integrity": "sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.1.tgz", + "integrity": "sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.1.tgz", + "integrity": "sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.1.tgz", + "integrity": "sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "android" + "linux" ], "engines": { "node": ">= 20" } }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { + "node_modules/@tailwindcss/oxide-wasm32-wasi": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.1.tgz", - "integrity": "sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.1.tgz", + "integrity": "sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.1.tgz", + "integrity": "sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==", "cpu": [ "arm64" ], @@ -1420,16 +3593,16 @@ "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">= 20" } }, - "node_modules/@tailwindcss/oxide-darwin-x64": { + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.1.tgz", - "integrity": "sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.1.tgz", + "integrity": "sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==", "cpu": [ "x64" ], @@ -1437,216 +3610,842 @@ "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">= 20" } }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.1.tgz", - "integrity": "sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 20" + "node_modules/@tailwindcss/postcss": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.2.1.tgz", + "integrity": "sha512-OEwGIBnXnj7zJeonOh6ZG9woofIjGrd2BORfvE5p9USYKDCZoQmfqLcfNiRWoJlRWLdNPn2IgVZuWAOM4iTYMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.2.1", + "@tailwindcss/oxide": "4.2.1", + "postcss": "^8.5.6", + "tailwindcss": "4.2.1" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", + "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.90.21", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", + "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.90.20" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@trezor/analytics": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@trezor/analytics/-/analytics-1.5.0.tgz", + "integrity": "sha512-evILW5XJEmfPlf0TY1duOLtGJ47pdGeSKVE3P75ODEUsRNxtPVqlkOUBPmYpCxPnzS8XDmkatT8lf9/DF0G6nA==", + "license": "See LICENSE.md in repo root", + "peer": true, + "dependencies": { + "@trezor/env-utils": "1.5.0", + "@trezor/utils": "9.5.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/blockchain-link": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link/-/blockchain-link-2.6.1.tgz", + "integrity": "sha512-SPwxkihOMI0o79BOy0RkfgVL2meuJhIe1yWHCeR8uoqf5KGblUyeXxvNCy6w8ckJ9LRpM1+bZhsUODuNs3083Q==", + "license": "SEE LICENSE IN LICENSE.md", + "peer": true, + "dependencies": { + "@solana-program/compute-budget": "^0.8.0", + "@solana-program/stake": "^0.2.1", + "@solana-program/token": "^0.5.1", + "@solana-program/token-2022": "^0.4.2", + "@solana/kit": "^2.3.0", + "@solana/rpc-types": "^2.3.0", + "@stellar/stellar-sdk": "14.2.0", + "@trezor/blockchain-link-types": "1.5.0", + "@trezor/blockchain-link-utils": "1.5.1", + "@trezor/env-utils": "1.5.0", + "@trezor/utils": "9.5.0", + "@trezor/utxo-lib": "2.5.0", + "@trezor/websocket-client": "1.3.0", + "@types/web": "^0.0.197", + "crypto-browserify": "3.12.0", + "socks-proxy-agent": "8.0.5", + "stream-browserify": "^3.0.0", + "xrpl": "4.4.3" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/blockchain-link-types": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link-types/-/blockchain-link-types-1.5.1.tgz", + "integrity": "sha512-Idavz6LwLBW8sXc69fh5AJEnl666EDl2Nt3io7updvBgOR0/P12I900DgjNhCKtiWuv66A33/5RE7zLcj3lfnw==", + "license": "See LICENSE.md in repo root", + "peer": true, + "dependencies": { + "@trezor/utils": "9.5.0", + "@trezor/utxo-lib": "2.5.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/blockchain-link-utils": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link-utils/-/blockchain-link-utils-1.5.2.tgz", + "integrity": "sha512-OSS5OEE98FMnYfjoEALPjBt7ebjC/FKnq3HOolHdEWXBpVlXZNN2+Vo1R9J6WbZUU087sHuUTJJy/GJYWY13Tg==", + "license": "See LICENSE.md in repo root", + "peer": true, + "dependencies": { + "@mobily/ts-belt": "^3.13.1", + "@stellar/stellar-sdk": "14.2.0", + "@trezor/env-utils": "1.5.0", + "@trezor/protobuf": "1.5.2", + "@trezor/utils": "9.5.0", + "xrpl": "4.4.3" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/blockchain-link-utils/node_modules/@stellar/stellar-sdk": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/@stellar/stellar-sdk/-/stellar-sdk-14.2.0.tgz", + "integrity": "sha512-7nh2ogzLRMhfkIC0fGjn1LHUzk3jqVw8tjAuTt5ADWfL9CSGBL18ILucE9igz2L/RU2AZgeAvhujAnW91Ut/oQ==", + "hasInstallScript": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@stellar/stellar-base": "^14.0.1", + "axios": "^1.12.2", + "bignumber.js": "^9.3.1", + "eventsource": "^2.0.2", + "feaxios": "^0.0.23", + "randombytes": "^2.1.0", + "toml": "^3.0.0", + "urijs": "^1.19.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@trezor/blockchain-link/node_modules/@stellar/stellar-sdk": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/@stellar/stellar-sdk/-/stellar-sdk-14.2.0.tgz", + "integrity": "sha512-7nh2ogzLRMhfkIC0fGjn1LHUzk3jqVw8tjAuTt5ADWfL9CSGBL18ILucE9igz2L/RU2AZgeAvhujAnW91Ut/oQ==", + "hasInstallScript": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@stellar/stellar-base": "^14.0.1", + "axios": "^1.12.2", + "bignumber.js": "^9.3.1", + "eventsource": "^2.0.2", + "feaxios": "^0.0.23", + "randombytes": "^2.1.0", + "toml": "^3.0.0", + "urijs": "^1.19.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@trezor/blockchain-link/node_modules/@trezor/blockchain-link-types": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link-types/-/blockchain-link-types-1.5.0.tgz", + "integrity": "sha512-wD6FKKxNr89MTWYL+NikRkBcWXhiWNFR0AuDHW6GHmlCEHhKu/hAvQtcER8X5jt/Wd0hSKNZqtHBXJ1ZkpJ6rg==", + "license": "See LICENSE.md in repo root", + "peer": true, + "dependencies": { + "@trezor/utils": "9.5.0", + "@trezor/utxo-lib": "2.5.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/blockchain-link/node_modules/@trezor/blockchain-link-utils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link-utils/-/blockchain-link-utils-1.5.1.tgz", + "integrity": "sha512-2tDGLEj5jzydjsJQONGTWVmCDDy6FTZ4ytr1/2gE6anyYEJU8MbaR+liTt3UvcP5jwZTNutwYLvZixRfrb8JpA==", + "license": "See LICENSE.md in repo root", + "peer": true, + "dependencies": { + "@mobily/ts-belt": "^3.13.1", + "@stellar/stellar-sdk": "14.2.0", + "@trezor/env-utils": "1.5.0", + "@trezor/protobuf": "1.5.1", + "@trezor/utils": "9.5.0", + "xrpl": "4.4.3" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/blockchain-link/node_modules/@trezor/protobuf": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@trezor/protobuf/-/protobuf-1.5.1.tgz", + "integrity": "sha512-nAkaCCAqLpErBd+IuKeG5MpbyLR/2RMgCw18TWc80m1Ws/XgQirhHY9Jbk6gLImTXb9GTrxP0+MDSahzd94rSA==", + "license": "See LICENSE.md in repo root", + "peer": true, + "dependencies": { + "@trezor/schema-utils": "1.4.0", + "long": "5.2.5", + "protobufjs": "7.4.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect": { + "version": "9.7.2", + "resolved": "https://registry.npmjs.org/@trezor/connect/-/connect-9.7.2.tgz", + "integrity": "sha512-Sn6F4mNH+yi2vAHy29kwhs50bRLn92drg3znm3pkY+8yEBxI4MmuP8sKYjdgUEJnQflWh80KlcvEDeVa4olVRA==", + "license": "SEE LICENSE IN LICENSE.md", + "peer": true, + "dependencies": { + "@ethereumjs/common": "^10.1.0", + "@ethereumjs/tx": "^10.1.0", + "@fivebinaries/coin-selection": "3.0.0", + "@mobily/ts-belt": "^3.13.1", + "@noble/hashes": "^1.6.1", + "@scure/bip39": "^1.5.1", + "@solana-program/compute-budget": "^0.8.0", + "@solana-program/system": "^0.7.0", + "@solana-program/token": "^0.5.1", + "@solana-program/token-2022": "^0.4.2", + "@solana/kit": "^2.3.0", + "@trezor/blockchain-link": "2.6.1", + "@trezor/blockchain-link-types": "1.5.1", + "@trezor/blockchain-link-utils": "1.5.2", + "@trezor/connect-analytics": "1.4.0", + "@trezor/connect-common": "0.5.1", + "@trezor/crypto-utils": "1.2.0", + "@trezor/device-authenticity": "1.1.2", + "@trezor/device-utils": "1.2.0", + "@trezor/env-utils": "^1.5.0", + "@trezor/protobuf": "1.5.2", + "@trezor/protocol": "1.3.0", + "@trezor/schema-utils": "1.4.0", + "@trezor/transport": "1.6.2", + "@trezor/type-utils": "1.2.0", + "@trezor/utils": "9.5.0", + "@trezor/utxo-lib": "2.5.0", + "blakejs": "^1.2.1", + "bs58": "^6.0.0", + "bs58check": "^4.0.0", + "cbor": "^10.0.10", + "cross-fetch": "^4.0.0", + "jws": "^4.0.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-analytics": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@trezor/connect-analytics/-/connect-analytics-1.4.0.tgz", + "integrity": "sha512-hy2J2oeIhRC/e1bOWXo5dsVMVnDwO2UKnxhR6FD8PINR3jgM6PWAXc6k33WJsBcyiTzwMP7/xPysLcgNJH5o4w==", + "license": "See LICENSE.md in repo root", + "peer": true, + "dependencies": { + "@trezor/analytics": "1.5.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-common": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@trezor/connect-common/-/connect-common-0.5.1.tgz", + "integrity": "sha512-wdpVCwdylBh4SBO5Ys40tB/d59UlfjmxgBHDkkLgaR+JcqkthCfiw5VlUrV9wu65lquejAZhA5KQL4mUUUhCow==", + "license": "SEE LICENSE IN LICENSE.md", + "peer": true, + "dependencies": { + "@trezor/env-utils": "1.5.0", + "@trezor/type-utils": "1.2.0", + "@trezor/utils": "9.5.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-plugin-stellar": { + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/@trezor/connect-plugin-stellar/-/connect-plugin-stellar-9.2.3.tgz", + "integrity": "sha512-ZzfRAaxkGj6u9dzUb/qsnEzEEg8gk0lhGRzuvX+JvvEmFBubAR7qK0U6Oj24vwLlOlF6swYrDdDNAtJvI0FFsg==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@trezor/utils": "9.4.3" + }, + "peerDependencies": { + "@stellar/stellar-sdk": "^13.3.0", + "@trezor/connect": "9.x.x", + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-plugin-stellar/node_modules/@trezor/utils": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/@trezor/utils/-/utils-9.4.3.tgz", + "integrity": "sha512-QkLHpGTF3W3wNGj6OCdcMog7MhAAdlUmpjjmMjMqE0JSoi1Yjr0m7k7xN0iIHSqcgrhYteZDeJZAGlAf/b7gqw==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "bignumber.js": "^9.3.1" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web": { + "version": "9.6.4", + "resolved": "https://registry.npmjs.org/@trezor/connect-web/-/connect-web-9.6.4.tgz", + "integrity": "sha512-Dip0+B2NKso8noux0mrsyy/Sz3Y0ZEn4Lq7CqM0hif4iu38FIPaUOWaR9BtDLj5TDYDi/sXHHkP+90gPobwigA==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@trezor/connect": "9.6.4", + "@trezor/connect-common": "0.4.4", + "@trezor/utils": "9.4.4", + "@trezor/websocket-client": "1.2.4" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/analytics": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@trezor/analytics/-/analytics-1.4.3.tgz", + "integrity": "sha512-0o7gp7nfip8yjhAwP3R/Hcy5S8RfmZmYwpCcN0PbydWa5U5VMQ+T/iB/OpbpeV+8j13bf6i7++38nTCUNas0GA==", + "license": "See LICENSE.md in repo root", + "dependencies": { + "@trezor/env-utils": "1.4.3", + "@trezor/utils": "9.4.3" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/analytics/node_modules/@trezor/utils": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/@trezor/utils/-/utils-9.4.3.tgz", + "integrity": "sha512-QkLHpGTF3W3wNGj6OCdcMog7MhAAdlUmpjjmMjMqE0JSoi1Yjr0m7k7xN0iIHSqcgrhYteZDeJZAGlAf/b7gqw==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "bignumber.js": "^9.3.1" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/blockchain-link": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link/-/blockchain-link-2.5.4.tgz", + "integrity": "sha512-3Xki/2Vmr1/rKa5LF+Eb2/Qd5N9LqwyRL76+ycqe1KwqV7xK3XGMsqTH9FUUReRvGxrzAFonbOgADAJczhx81w==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@solana-program/compute-budget": "^0.8.0", + "@solana-program/stake": "^0.2.1", + "@solana-program/token": "^0.5.1", + "@solana-program/token-2022": "^0.4.2", + "@solana/kit": "^2.3.0", + "@solana/rpc-types": "^2.3.0", + "@stellar/stellar-sdk": "^13.3.0", + "@trezor/blockchain-link-types": "1.4.4", + "@trezor/blockchain-link-utils": "1.4.4", + "@trezor/env-utils": "1.4.3", + "@trezor/utils": "9.4.4", + "@trezor/utxo-lib": "2.4.4", + "@trezor/websocket-client": "1.2.4", + "@types/web": "^0.0.197", + "crypto-browserify": "3.12.0", + "socks-proxy-agent": "8.0.5", + "stream-browserify": "^3.0.0", + "xrpl": "^4.4.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/blockchain-link-types": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link-types/-/blockchain-link-types-1.4.4.tgz", + "integrity": "sha512-B38LH4aniZ7gKbpSdMRiA4YriauoYPHgjhKEd+ybR0ca+liNlPAvMwSHJyMhL1eDIYEs16oOjTgT53WjRRZbMg==", + "license": "See LICENSE.md in repo root", + "dependencies": { + "@trezor/utils": "9.4.4", + "@trezor/utxo-lib": "2.4.4" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/blockchain-link-utils": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@trezor/blockchain-link-utils/-/blockchain-link-utils-1.4.4.tgz", + "integrity": "sha512-8BZD6h5gs3ETPOG2Ri+GOyH44D38YQVeQj8n7oVOVQi21zx93JOpdL3fWS9RytkfmvB84WwVzYoHGlTs3T80Gw==", + "license": "See LICENSE.md in repo root", + "dependencies": { + "@mobily/ts-belt": "^3.13.1", + "@stellar/stellar-sdk": "^13.3.0", + "@trezor/env-utils": "1.4.3", + "@trezor/protobuf": "1.4.4", + "@trezor/utils": "9.4.4", + "xrpl": "^4.4.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/connect": { + "version": "9.6.4", + "resolved": "https://registry.npmjs.org/@trezor/connect/-/connect-9.6.4.tgz", + "integrity": "sha512-/N3hhOFIIhufvihCx92wvxd15Wy9XAJOSbTiV8rYG2N9uBvzejctNO2+LpwCRl/cBKle9rsp4S7C/zz++iDuOg==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@ethereumjs/common": "^10.0.0", + "@ethereumjs/tx": "^10.0.0", + "@fivebinaries/coin-selection": "3.0.0", + "@mobily/ts-belt": "^3.13.1", + "@noble/hashes": "^1.6.1", + "@scure/bip39": "^1.5.1", + "@solana-program/compute-budget": "^0.8.0", + "@solana-program/system": "^0.7.0", + "@solana-program/token": "^0.5.1", + "@solana-program/token-2022": "^0.4.2", + "@solana/kit": "^2.3.0", + "@trezor/blockchain-link": "2.5.4", + "@trezor/blockchain-link-types": "1.4.4", + "@trezor/blockchain-link-utils": "1.4.4", + "@trezor/connect-analytics": "1.3.6", + "@trezor/connect-common": "0.4.4", + "@trezor/crypto-utils": "1.1.5", + "@trezor/device-utils": "1.1.4", + "@trezor/env-utils": "^1.4.3", + "@trezor/protobuf": "1.4.4", + "@trezor/protocol": "1.2.10", + "@trezor/schema-utils": "1.3.4", + "@trezor/transport": "1.5.4", + "@trezor/type-utils": "1.1.9", + "@trezor/utils": "9.4.4", + "@trezor/utxo-lib": "2.4.4", + "blakejs": "^1.2.1", + "bs58": "^6.0.0", + "bs58check": "^4.0.0", + "cbor": "^10.0.10", + "cross-fetch": "^4.0.0", + "jws": "^4.0.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/connect-analytics": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@trezor/connect-analytics/-/connect-analytics-1.3.6.tgz", + "integrity": "sha512-Skya46inItcjaahaqpeSsQmB2Xle70f/l+6eTTJYxKQdpMtuW5LRsRRiyMAQTp5RBycL2ngnsVtY+/83Bt5lUw==", + "license": "See LICENSE.md in repo root", + "dependencies": { + "@trezor/analytics": "1.4.3" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/connect-common": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@trezor/connect-common/-/connect-common-0.4.4.tgz", + "integrity": "sha512-xG2CoPjgcldtO6HU0ZjNCvFdQ4hpl56qzU1VEF1/A1BL2zj2TwLGLmyr4E878go1mmfksNGY5a1tqnzAZ7pRLw==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@trezor/env-utils": "1.4.3", + "@trezor/type-utils": "1.1.9", + "@trezor/utils": "9.4.4" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/crypto-utils": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@trezor/crypto-utils/-/crypto-utils-1.1.5.tgz", + "integrity": "sha512-Bp3L9MvzYy1OhPcNJIPIPu7kAH1lQyI1ZMuGnIo53nLDcU+t7cWO8z8xpyGW1BAnQ9wn+xaqrycLRf76I0TBtA==", + "license": "SEE LICENSE IN LICENSE.md", + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/device-utils": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@trezor/device-utils/-/device-utils-1.1.4.tgz", + "integrity": "sha512-hFC0nVnWVFaWx0IfCsoHGvBrh5SKsnTHwrX5pvBotwOw51lzTDMd43CkA7nHRybkhcc2JgX1Qq2UbYdwgEWhPg==", + "license": "See LICENSE.md in repo root" + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/env-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@trezor/env-utils/-/env-utils-1.4.3.tgz", + "integrity": "sha512-sWC828NRNQi5vc9W4M9rHOJDeI9XlsgnzZaML/lHju7WhlZCmSq5BOntZQvD8d1W0fSwLMLdlcBKBr/gQkvFZQ==", + "license": "See LICENSE.md in repo root", + "dependencies": { + "ua-parser-js": "^2.0.4" + }, + "peerDependencies": { + "expo-constants": "*", + "expo-localization": "*", + "react-native": "*", + "tslib": "^2.6.2" + }, + "peerDependenciesMeta": { + "expo-constants": { + "optional": true + }, + "expo-localization": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/protobuf": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@trezor/protobuf/-/protobuf-1.4.4.tgz", + "integrity": "sha512-+DwcXkio4qlMkPu6KxnEfhXv5PHTkKh2n6Fo88i5zishUHpYD3NhCS0pouzti8PIPyJE73HQ9MoisG44KQjbtg==", + "license": "See LICENSE.md in repo root", + "dependencies": { + "@trezor/schema-utils": "1.3.4", + "long": "5.2.5", + "protobufjs": "7.4.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/protocol": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@trezor/protocol/-/protocol-1.2.10.tgz", + "integrity": "sha512-Ek5bHu2s4OAWOaJU5ksd1kcpe/STyLWOtUVTq6Vn4oMT3++qtrjWRQx/aTN/UaTfNoZlKvFXCC/STGlgBv9CKQ==", + "license": "See LICENSE.md in repo root", + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/schema-utils": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@trezor/schema-utils/-/schema-utils-1.3.4.tgz", + "integrity": "sha512-guP5TKjQEWe6c5HGx+7rhM0SAdEL5gylpkvk9XmJXjZDnl1Ew81nmLHUs2ghf8Od3pKBe4qjBIMBHUQNaOqWUg==", + "license": "See LICENSE.md in repo root", + "dependencies": { + "@sinclair/typebox": "^0.33.7", + "ts-mixer": "^6.0.3" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/transport": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@trezor/transport/-/transport-1.5.4.tgz", + "integrity": "sha512-3vGn2IEofbzhKMyLjzmTCwVTE5Wj0gkncLCNc66DU95IEW5WlwNGt/nXSJCg9TMBHK6qtlbY1HOBFuUzEW2Q7w==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@trezor/protobuf": "1.4.4", + "@trezor/protocol": "1.2.10", + "@trezor/type-utils": "1.1.9", + "@trezor/utils": "9.4.4", + "cross-fetch": "^4.0.0", + "usb": "^2.15.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/type-utils": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@trezor/type-utils/-/type-utils-1.1.9.tgz", + "integrity": "sha512-/Ug5pmVEpT5OVrf007kEvDj+zOdedHV0QcToUHG/WpVAKH9IsOssOAYIfRr8lDDgT+mDHuArZk/bYa1qvVz8Hw==", + "license": "See LICENSE.md in repo root" + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/utils": { + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/@trezor/utils/-/utils-9.4.4.tgz", + "integrity": "sha512-08ciafbBqhApn58q3KkewdLQ3dCA71MsK/BOUfD43EB2GpB420zzky7REilXhOONc3giD0fBbTG3Zdt3HNL0/Q==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "bignumber.js": "^9.3.1" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/utxo-lib": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@trezor/utxo-lib/-/utxo-lib-2.4.4.tgz", + "integrity": "sha512-rccdH3+iqvBL/Nkso/wGCdIXAQY+M/ubLIf/i/hBbcpRH6JoOg8oyaoaHzegsYNE6yHKnykTOZWz5Q4MTG02Bw==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@trezor/utils": "9.4.4", + "bech32": "^2.0.0", + "bip66": "^2.0.0", + "bitcoin-ops": "^1.4.1", + "blake-hash": "^2.0.0", + "blakejs": "^1.2.1", + "bn.js": "^5.2.2", + "bs58": "^6.0.0", + "bs58check": "^4.0.0", + "cashaddrjs": "0.4.4", + "create-hmac": "^1.1.7", + "int64-buffer": "^1.1.0", + "pushdata-bitcoin": "^1.0.1", + "tiny-secp256k1": "^1.1.7", + "typeforce": "^1.18.0", + "varuint-bitcoin": "2.0.0", + "wif": "^5.0.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/connect-web/node_modules/@trezor/websocket-client": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@trezor/websocket-client/-/websocket-client-1.2.4.tgz", + "integrity": "sha512-UgU31gFX8gY0abeI5DjRVnH4RfbXqHcOb019ogkR51KlfjkiWXTvUWKRLLqwslWiUIMEAI3ZFeXQds84b7Uw/Q==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@trezor/utils": "9.4.4", + "ws": "^8.18.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" } }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.1.tgz", - "integrity": "sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 20" + "node_modules/@trezor/crypto-utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@trezor/crypto-utils/-/crypto-utils-1.2.0.tgz", + "integrity": "sha512-9i1NrfW1IE6JO910ut7xrx4u5LxE++GETbpJhWLj4P5xpuGDDSDLEn/MXaYisls2DpE897aOrGPaa1qyt8V6tw==", + "license": "SEE LICENSE IN LICENSE.md", + "peer": true, + "peerDependencies": { + "tslib": "^2.6.2" } }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.1.tgz", - "integrity": "sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 20" + "node_modules/@trezor/device-authenticity": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@trezor/device-authenticity/-/device-authenticity-1.1.2.tgz", + "integrity": "sha512-313uSXYR4XKDv3CjtCpgHA+yEe9xxqN7EFl/D68FEn70SPsuWI0+2zUvjPPh6TIOh/EcLv7hCO/QTHUAGd7ZWQ==", + "license": "See LICENSE.md in repo root", + "peer": true, + "dependencies": { + "@noble/curves": "^2.0.1", + "@trezor/crypto-utils": "1.2.0", + "@trezor/protobuf": "1.5.2", + "@trezor/schema-utils": "1.4.0", + "@trezor/utils": "9.5.0" } }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.1.tgz", - "integrity": "sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@trezor/device-authenticity/node_modules/@noble/curves": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", + "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "peer": true, + "dependencies": { + "@noble/hashes": "2.0.1" + }, "engines": { - "node": ">= 20" + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.1.tgz", - "integrity": "sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@trezor/device-authenticity/node_modules/@noble/hashes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", + "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "peer": true, "engines": { - "node": ">= 20" + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.1.tgz", - "integrity": "sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 20" - } + "node_modules/@trezor/device-utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@trezor/device-utils/-/device-utils-1.2.0.tgz", + "integrity": "sha512-Aqp7pIooFTx21zRUtTI6i1AS4d9Lrx7cclvksh2nJQF9WJvbzuCXshEGkLoOsHwhQrCl3IXfbGuMdA12yDenPA==", + "license": "See LICENSE.md in repo root", + "peer": true }, - "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.1.tgz", - "integrity": "sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==", - "bundleDependencies": [ - "@napi-rs/wasm-runtime", - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util", - "@emnapi/wasi-threads", - "tslib" - ], - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, + "node_modules/@trezor/env-utils": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@trezor/env-utils/-/env-utils-1.5.0.tgz", + "integrity": "sha512-u1TN7dMQ5Qhpbae08Z4JJmI9fQrbbJ4yj8eIAsuzMQn6vb+Sg9vbntl+IDsZ1G9WeI73uHTLu1wWMmAgiujH8w==", + "license": "See LICENSE.md in repo root", + "peer": true, "dependencies": { - "@emnapi/core": "^1.8.1", - "@emnapi/runtime": "^1.8.1", - "@emnapi/wasi-threads": "^1.1.0", - "@napi-rs/wasm-runtime": "^1.1.1", - "@tybys/wasm-util": "^0.10.1", - "tslib": "^2.8.1" + "ua-parser-js": "^2.0.4" }, - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "expo-constants": "*", + "expo-localization": "*", + "react-native": "*", + "tslib": "^2.6.2" + }, + "peerDependenciesMeta": { + "expo-constants": { + "optional": true + }, + "expo-localization": { + "optional": true + }, + "react-native": { + "optional": true + } } }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.1.tgz", - "integrity": "sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 20" + "node_modules/@trezor/protobuf": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@trezor/protobuf/-/protobuf-1.5.2.tgz", + "integrity": "sha512-zViaL1jKue8DUTVEDg0C/lMipqNMd/Z3kr29/+MeZOoupjaXIQ2Lqp3WAMe8hvNTKKX8aNQH9JrbapJ6w9FMXw==", + "license": "See LICENSE.md in repo root", + "peer": true, + "dependencies": { + "@trezor/schema-utils": "1.4.0", + "long": "5.2.5", + "protobufjs": "7.4.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" } }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.1.tgz", - "integrity": "sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 20" + "node_modules/@trezor/protocol": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@trezor/protocol/-/protocol-1.3.0.tgz", + "integrity": "sha512-rmrxbDrdgxTouBPbZcSeqU7ba/e5WVT1dxvxxEntHqRdTiDl7d3VK+BErCrlyol8EH5YCqEF3/rXt0crSOfoFw==", + "license": "See LICENSE.md in repo root", + "peer": true, + "peerDependencies": { + "tslib": "^2.6.2" } }, - "node_modules/@tailwindcss/postcss": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.2.1.tgz", - "integrity": "sha512-OEwGIBnXnj7zJeonOh6ZG9woofIjGrd2BORfvE5p9USYKDCZoQmfqLcfNiRWoJlRWLdNPn2IgVZuWAOM4iTYMw==", - "dev": true, - "license": "MIT", + "node_modules/@trezor/schema-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@trezor/schema-utils/-/schema-utils-1.4.0.tgz", + "integrity": "sha512-K7upSeh7VDrORaIC4KAxYVW93XNlohmUnH5if/5GKYmTdQSRp1nBkO6Jm+Z4hzIthdnz/1aLgnbeN3bDxWLRxA==", + "license": "See LICENSE.md in repo root", + "peer": true, "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.2.1", - "@tailwindcss/oxide": "4.2.1", - "postcss": "^8.5.6", - "tailwindcss": "4.2.1" + "@sinclair/typebox": "^0.33.7", + "ts-mixer": "^6.0.3" + }, + "peerDependencies": { + "tslib": "^2.6.2" } }, - "node_modules/@tanstack/query-core": { - "version": "5.90.20", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", - "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" + "node_modules/@trezor/transport": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@trezor/transport/-/transport-1.6.2.tgz", + "integrity": "sha512-w0HlD1fU+qTGO3tefBGHF/YS/ts/TWFja9FGIJ4+7+Z9NphvIG06HGvy2HzcD9AhJy9pvDeIsyoM2TTZTiyjkQ==", + "license": "SEE LICENSE IN LICENSE.md", + "peer": true, + "dependencies": { + "@trezor/protobuf": "1.5.2", + "@trezor/protocol": "1.3.0", + "@trezor/type-utils": "1.2.0", + "@trezor/utils": "9.5.0", + "cross-fetch": "^4.0.0", + "usb": "^2.15.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" } }, - "node_modules/@tanstack/react-query": { - "version": "5.90.21", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", - "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", - "license": "MIT", + "node_modules/@trezor/type-utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@trezor/type-utils/-/type-utils-1.2.0.tgz", + "integrity": "sha512-+E2QntxkyQuYfQQyl8RvT01tq2i5Dp/LFUOXuizF+KVOqsZBjBY43j5hewcCO3+MokD7deDiPyekbUEN5/iVlw==", + "license": "See LICENSE.md in repo root", + "peer": true + }, + "node_modules/@trezor/utils": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/@trezor/utils/-/utils-9.5.0.tgz", + "integrity": "sha512-kdyMyDbxzvOZmwBNvTjAK+C/kzyOz8T4oUbFvq+KaXn5mBFf1uf8rq5X2HkxgdYRPArtHS3PxLKsfkNCdhCYtQ==", + "license": "SEE LICENSE IN LICENSE.md", + "peer": true, "dependencies": { - "@tanstack/query-core": "5.90.20" + "bignumber.js": "^9.3.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/utxo-lib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@trezor/utxo-lib/-/utxo-lib-2.5.0.tgz", + "integrity": "sha512-Fa2cZh0037oX6AHNLfpFIj65UR/OoX0ZJTocFuQASe77/1PjZHysf6BvvGfmzuFToKfrAQ+DM/1Sx+P/vnyNmA==", + "license": "SEE LICENSE IN LICENSE.md", + "peer": true, + "dependencies": { + "@trezor/utils": "9.5.0", + "bech32": "^2.0.0", + "bip66": "^2.0.0", + "bitcoin-ops": "^1.4.1", + "blake-hash": "^2.0.0", + "blakejs": "^1.2.1", + "bn.js": "^5.2.2", + "bs58": "^6.0.0", + "bs58check": "^4.0.0", + "cashaddrjs": "0.4.4", + "create-hmac": "^1.1.7", + "int64-buffer": "^1.1.0", + "pushdata-bitcoin": "^1.0.1", + "tiny-secp256k1": "^1.1.7", + "typeforce": "^1.18.0", + "varuint-bitcoin": "2.0.0", + "wif": "^5.0.0" }, "peerDependencies": { - "react": "^18 || ^19" + "tslib": "^2.6.2" + } + }, + "node_modules/@trezor/websocket-client": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@trezor/websocket-client/-/websocket-client-1.3.0.tgz", + "integrity": "sha512-9KQSaVc3NtmM6rFFj1e+9bM0C5mVKVidbnxlfzuBJu7G2YMRdIdLPcAXhvmRZjs40uzDuBeApK+p547kODz2ug==", + "license": "SEE LICENSE IN LICENSE.md", + "peer": true, + "dependencies": { + "@trezor/utils": "9.5.0", + "ws": "^8.18.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" } }, "node_modules/@tybys/wasm-util": { @@ -1660,6 +4459,15 @@ "tslib": "^2.4.0" } }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", @@ -1677,7 +4485,6 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, "license": "MIT" }, "node_modules/@types/json5": { @@ -1696,6 +4503,12 @@ "undici-types": "~6.21.0" } }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, "node_modules/@types/phoenix": { "version": "1.6.7", "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.7.tgz", @@ -1706,7 +4519,7 @@ "version": "19.2.14", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "csstype": "^3.2.2" @@ -1722,6 +4535,30 @@ "@types/react": "^19.2.0" } }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "license": "MIT" + }, + "node_modules/@types/w3c-web-usb": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@types/w3c-web-usb/-/w3c-web-usb-1.0.13.tgz", + "integrity": "sha512-N2nSl3Xsx8mRHZBvMSdNGtzMyeleTvtlEw+ujujgXalPqOjIA6UtrqcB6OzyUjkTbDm3J7P1RNK1lgoO7jxtsw==", + "license": "MIT" + }, + "node_modules/@types/web": { + "version": "0.0.197", + "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.197.tgz", + "integrity": "sha512-V4sOroWDADFx9dLodWpKm298NOJ1VJ6zoDVgaP+WBb/utWxqQ6gnMzd9lvVDAr/F3ibiKaxH9i45eS0gQPSTaQ==", + "license": "Apache-2.0" + }, "node_modules/@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", @@ -1732,17 +4569,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", - "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.0.tgz", + "integrity": "sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/type-utils": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.57.0", + "@typescript-eslint/type-utils": "8.57.0", + "@typescript-eslint/utils": "8.57.0", + "@typescript-eslint/visitor-keys": "8.57.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -1755,7 +4592,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.1", + "@typescript-eslint/parser": "^8.57.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -1771,16 +4608,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", - "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.0.tgz", + "integrity": "sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.57.0", + "@typescript-eslint/types": "8.57.0", + "@typescript-eslint/typescript-estree": "8.57.0", + "@typescript-eslint/visitor-keys": "8.57.0", "debug": "^4.4.3" }, "engines": { @@ -1796,14 +4633,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", - "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.0.tgz", + "integrity": "sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.1", - "@typescript-eslint/types": "^8.56.1", + "@typescript-eslint/tsconfig-utils": "^8.57.0", + "@typescript-eslint/types": "^8.57.0", "debug": "^4.4.3" }, "engines": { @@ -1818,14 +4655,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.0.tgz", + "integrity": "sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.57.0", + "@typescript-eslint/visitor-keys": "8.57.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1836,9 +4673,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", - "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.0.tgz", + "integrity": "sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==", "dev": true, "license": "MIT", "engines": { @@ -1853,15 +4690,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.0.tgz", + "integrity": "sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/types": "8.57.0", + "@typescript-eslint/typescript-estree": "8.57.0", + "@typescript-eslint/utils": "8.57.0", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -1878,9 +4715,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.0.tgz", + "integrity": "sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==", "dev": true, "license": "MIT", "engines": { @@ -1892,16 +4729,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.0.tgz", + "integrity": "sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.57.0", + "@typescript-eslint/tsconfig-utils": "8.57.0", + "@typescript-eslint/types": "8.57.0", + "@typescript-eslint/visitor-keys": "8.57.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -1947,41 +4784,28 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=10" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.0.tgz", + "integrity": "sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.57.0", + "@typescript-eslint/types": "8.57.0", + "@typescript-eslint/typescript-estree": "8.57.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1996,13 +4820,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.0.tgz", + "integrity": "sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.57.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -2295,6 +5119,676 @@ "win32" ] }, + "node_modules/@wallet-standard/base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wallet-standard/base/-/base-1.1.0.tgz", + "integrity": "sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/features": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wallet-standard/features/-/features-1.1.0.tgz", + "integrity": "sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/base": "^1.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/wallet": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wallet-standard/wallet/-/wallet-1.1.0.tgz", + "integrity": "sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/base": "^1.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@walletconnect/core": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.23.0.tgz", + "integrity": "sha512-W++xuXf+AsMPrBWn1It8GheIbCTp1ynTQP+aoFB86eUwyCtSiK7UQsn/+vJZdwElrn+Ptp2A0RqQx2onTMVHjQ==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/jsonrpc-ws-connection": "1.0.16", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "3.0.0", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.23.0", + "@walletconnect/utils": "2.23.0", + "@walletconnect/window-getters": "1.0.1", + "es-toolkit": "1.39.3", + "events": "3.3.0", + "uint8arrays": "3.1.1" + }, + "engines": { + "node": ">=18.20.8" + } + }, + "node_modules/@walletconnect/core/node_modules/@walletconnect/logger": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-3.0.0.tgz", + "integrity": "sha512-DDktPBFdmt5d7U3sbp4e3fQHNS1b6amsR8FmtOnt6L2SnV7VfcZr8VmAGL12zetAR+4fndegbREmX0P8Mw6eDg==", + "license": "MIT", + "dependencies": { + "@walletconnect/safe-json": "^1.0.2", + "pino": "10.0.0" + } + }, + "node_modules/@walletconnect/environment": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.1.tgz", + "integrity": "sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==", + "license": "MIT", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/environment/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/@walletconnect/events": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/events/-/events-1.0.1.tgz", + "integrity": "sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==", + "license": "MIT", + "dependencies": { + "keyvaluestorage-interface": "^1.0.0", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/events/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/@walletconnect/heartbeat": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.2.tgz", + "integrity": "sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==", + "license": "MIT", + "dependencies": { + "@walletconnect/events": "^1.0.1", + "@walletconnect/time": "^1.0.2", + "events": "^3.3.0" + } + }, + "node_modules/@walletconnect/jsonrpc-http-connection": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.8.tgz", + "integrity": "sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==", + "license": "MIT", + "dependencies": { + "@walletconnect/jsonrpc-utils": "^1.0.6", + "@walletconnect/safe-json": "^1.0.1", + "cross-fetch": "^3.1.4", + "events": "^3.3.0" + } + }, + "node_modules/@walletconnect/jsonrpc-http-connection/node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/@walletconnect/jsonrpc-provider": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz", + "integrity": "sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==", + "license": "MIT", + "dependencies": { + "@walletconnect/jsonrpc-utils": "^1.0.8", + "@walletconnect/safe-json": "^1.0.2", + "events": "^3.3.0" + } + }, + "node_modules/@walletconnect/jsonrpc-types": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz", + "integrity": "sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==", + "license": "MIT", + "dependencies": { + "events": "^3.3.0", + "keyvaluestorage-interface": "^1.0.0" + } + }, + "node_modules/@walletconnect/jsonrpc-utils": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz", + "integrity": "sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==", + "license": "MIT", + "dependencies": { + "@walletconnect/environment": "^1.0.1", + "@walletconnect/jsonrpc-types": "^1.0.3", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/jsonrpc-utils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/@walletconnect/jsonrpc-ws-connection": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.16.tgz", + "integrity": "sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q==", + "license": "MIT", + "dependencies": { + "@walletconnect/jsonrpc-utils": "^1.0.6", + "@walletconnect/safe-json": "^1.0.2", + "events": "^3.3.0", + "ws": "^7.5.1" + } + }, + "node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@walletconnect/keyvaluestorage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", + "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", + "license": "MIT", + "dependencies": { + "@walletconnect/safe-json": "^1.0.1", + "idb-keyval": "^6.2.1", + "unstorage": "^1.9.0" + }, + "peerDependencies": { + "@react-native-async-storage/async-storage": "1.x" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } + } + }, + "node_modules/@walletconnect/logger": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-3.0.2.tgz", + "integrity": "sha512-7wR3wAwJTOmX4gbcUZcFMov8fjftY05+5cO/d4cpDD8wDzJ+cIlKdYOXaXfxHLSYeDazMXIsxMYjHYVDfkx+nA==", + "license": "MIT", + "dependencies": { + "@walletconnect/safe-json": "^1.0.2", + "pino": "10.0.0" + } + }, + "node_modules/@walletconnect/relay-api": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.11.tgz", + "integrity": "sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==", + "license": "MIT", + "dependencies": { + "@walletconnect/jsonrpc-types": "^1.0.2" + } + }, + "node_modules/@walletconnect/relay-auth": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-auth/-/relay-auth-1.1.0.tgz", + "integrity": "sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==", + "license": "MIT", + "dependencies": { + "@noble/curves": "1.8.0", + "@noble/hashes": "1.7.0", + "@walletconnect/safe-json": "^1.0.1", + "@walletconnect/time": "^1.0.2", + "uint8arrays": "^3.0.0" + } + }, + "node_modules/@walletconnect/relay-auth/node_modules/@noble/curves": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.0.tgz", + "integrity": "sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.7.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@walletconnect/relay-auth/node_modules/@noble/hashes": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.0.tgz", + "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "license": "MIT", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/safe-json/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/@walletconnect/sign-client": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.23.0.tgz", + "integrity": "sha512-Nzf5x/LnQgC0Yjk0NmkT8kdrIMcScpALiFm9gP0n3CulL+dkf3HumqWzdoTmQSqGPxwHu/TNhGOaRKZLGQXSqw==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@walletconnect/core": "2.23.0", + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/logger": "3.0.0", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.23.0", + "@walletconnect/utils": "2.23.0", + "events": "3.3.0" + } + }, + "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/logger": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-3.0.0.tgz", + "integrity": "sha512-DDktPBFdmt5d7U3sbp4e3fQHNS1b6amsR8FmtOnt6L2SnV7VfcZr8VmAGL12zetAR+4fndegbREmX0P8Mw6eDg==", + "license": "MIT", + "dependencies": { + "@walletconnect/safe-json": "^1.0.2", + "pino": "10.0.0" + } + }, + "node_modules/@walletconnect/time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/time/-/time-1.0.2.tgz", + "integrity": "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==", + "license": "MIT", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/time/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/@walletconnect/types": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.23.0.tgz", + "integrity": "sha512-9ZEOJyx/kNVCRncDHh3Qr9eH7Ih1dXBFB4k1J8iEudkv3t4GhYpXhqIt2kNdQWluPb1BBB4wEuckAT96yKuA8g==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "3.0.0", + "events": "3.3.0" + } + }, + "node_modules/@walletconnect/types/node_modules/@walletconnect/logger": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-3.0.0.tgz", + "integrity": "sha512-DDktPBFdmt5d7U3sbp4e3fQHNS1b6amsR8FmtOnt6L2SnV7VfcZr8VmAGL12zetAR+4fndegbREmX0P8Mw6eDg==", + "license": "MIT", + "dependencies": { + "@walletconnect/safe-json": "^1.0.2", + "pino": "10.0.0" + } + }, + "node_modules/@walletconnect/universal-provider": { + "version": "2.22.4", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.22.4.tgz", + "integrity": "sha512-TF2RNX13qxa0rrBAhVDs5+C2G8CHX7L0PH5hF2uyQHdGyxZ3pFbXf8rxmeW1yKlB76FSbW80XXNrUes6eK/xHg==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@walletconnect/events": "1.0.1", + "@walletconnect/jsonrpc-http-connection": "1.0.8", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "3.0.0", + "@walletconnect/sign-client": "2.22.4", + "@walletconnect/types": "2.22.4", + "@walletconnect/utils": "2.22.4", + "es-toolkit": "1.39.3", + "events": "3.3.0" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/core": { + "version": "2.22.4", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.22.4.tgz", + "integrity": "sha512-ZQnyDDpqDPAk5lyLV19BRccQ3wwK3LmAwibuIv3X+44aT/dOs2kQGu9pla3iW2LgZ5qRMYvgvvfr5g3WlDGceQ==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/jsonrpc-ws-connection": "1.0.16", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "3.0.0", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.22.4", + "@walletconnect/utils": "2.22.4", + "@walletconnect/window-getters": "1.0.1", + "es-toolkit": "1.39.3", + "events": "3.3.0", + "uint8arrays": "3.1.1" + }, + "engines": { + "node": ">=18.20.8" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/logger": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-3.0.0.tgz", + "integrity": "sha512-DDktPBFdmt5d7U3sbp4e3fQHNS1b6amsR8FmtOnt6L2SnV7VfcZr8VmAGL12zetAR+4fndegbREmX0P8Mw6eDg==", + "license": "MIT", + "dependencies": { + "@walletconnect/safe-json": "^1.0.2", + "pino": "10.0.0" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/sign-client": { + "version": "2.22.4", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.22.4.tgz", + "integrity": "sha512-la+sol0KL33Fyx5DRlupHREIv8wA6W33bRfuLAfLm8pINRTT06j9rz0IHIqJihiALebFxVZNYzJnF65PhV0q3g==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@walletconnect/core": "2.22.4", + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/logger": "3.0.0", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.22.4", + "@walletconnect/utils": "2.22.4", + "events": "3.3.0" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/types": { + "version": "2.22.4", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.22.4.tgz", + "integrity": "sha512-KJdiS9ezXzx1uASanldYaaenDwb42VOQ6Rj86H7FRwfYddhNnYnyEaDjDKOdToGRGcpt5Uzom6qYUOnrWEbp5g==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "3.0.0", + "events": "3.3.0" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/utils": { + "version": "2.22.4", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.22.4.tgz", + "integrity": "sha512-coAPrNiTiD+snpiXQyXakMVeYcddqVqII7aLU39TeILdPoXeNPc2MAja+MF7cKNM/PA3tespljvvxck/oTm4+Q==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@msgpack/msgpack": "3.1.2", + "@noble/ciphers": "1.3.0", + "@noble/curves": "1.9.7", + "@noble/hashes": "1.8.0", + "@scure/base": "1.2.6", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "3.0.0", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.22.4", + "@walletconnect/window-getters": "1.0.1", + "@walletconnect/window-metadata": "1.0.1", + "blakejs": "1.2.1", + "bs58": "6.0.0", + "detect-browser": "5.3.0", + "ox": "0.9.3", + "uint8arrays": "3.1.1" + } + }, + "node_modules/@walletconnect/utils": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.23.0.tgz", + "integrity": "sha512-bVyv4Hl+/wVGueZ6rEO0eYgDy5deSBA4JjpJHAMOdaNoYs05NTE1HymV2lfPQQHuqc7suYexo9jwuW7i3JLuAA==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@msgpack/msgpack": "3.1.2", + "@noble/ciphers": "1.3.0", + "@noble/curves": "1.9.7", + "@noble/hashes": "1.8.0", + "@scure/base": "1.2.6", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "3.0.0", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.23.0", + "@walletconnect/window-getters": "1.0.1", + "@walletconnect/window-metadata": "1.0.1", + "blakejs": "1.2.1", + "bs58": "6.0.0", + "detect-browser": "5.3.0", + "ox": "0.9.3", + "uint8arrays": "3.1.1" + } + }, + "node_modules/@walletconnect/utils/node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@walletconnect/utils/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@walletconnect/utils/node_modules/@walletconnect/logger": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-3.0.0.tgz", + "integrity": "sha512-DDktPBFdmt5d7U3sbp4e3fQHNS1b6amsR8FmtOnt6L2SnV7VfcZr8VmAGL12zetAR+4fndegbREmX0P8Mw6eDg==", + "license": "MIT", + "dependencies": { + "@walletconnect/safe-json": "^1.0.2", + "pino": "10.0.0" + } + }, + "node_modules/@walletconnect/window-getters": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", + "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", + "license": "MIT", + "dependencies": { + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/window-getters/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/@walletconnect/window-metadata": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", + "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", + "license": "MIT", + "dependencies": { + "@walletconnect/window-getters": "^1.0.1", + "tslib": "1.14.1" + } + }, + "node_modules/@walletconnect/window-metadata/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/@xrplf/isomorphic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@xrplf/isomorphic/-/isomorphic-1.0.1.tgz", + "integrity": "sha512-0bIpgx8PDjYdrLFeC3csF305QQ1L7sxaWnL5y71mCvhenZzJgku9QsA+9QCXBC1eNYtxWO/xR91zrXJy2T/ixg==", + "license": "ISC", + "dependencies": { + "@noble/hashes": "^1.0.0", + "eventemitter3": "5.0.1", + "ws": "^8.13.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@xrplf/isomorphic/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/@xrplf/secret-numbers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@xrplf/secret-numbers/-/secret-numbers-2.0.0.tgz", + "integrity": "sha512-z3AOibRTE9E8MbjgzxqMpG1RNaBhQ1jnfhNCa1cGf2reZUJzPMYs4TggQTc7j8+0WyV3cr7y/U8Oz99SXIkN5Q==", + "license": "ISC", + "dependencies": { + "@xrplf/isomorphic": "^1.0.1", + "ripple-keypairs": "^2.0.0" + } + }, + "node_modules/abitype": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz", + "integrity": "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3.22.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", @@ -2318,6 +5812,27 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/agentkeepalive": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, "node_modules/ajv": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", @@ -2335,11 +5850,19 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2351,6 +5874,19 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2528,6 +6064,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "license": "MIT" + }, "node_modules/ast-types-flow": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", @@ -2545,11 +6098,25 @@ "node": ">= 0.4" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" @@ -2571,6 +6138,17 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/axobject-query": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", @@ -2598,6 +6176,85 @@ "dev": true, "license": "MIT" }, + "node_modules/bare-addon-resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/bare-addon-resolve/-/bare-addon-resolve-1.10.0.tgz", + "integrity": "sha512-sSd0jieRJlDaODOzj0oe0RjFVC1QI0ZIjGIdPkbrTXsdVVtENg14c+lHHAhHwmWCZ2nQlMhy8jA3Y5LYPc/isA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-module-resolve": "^1.10.0", + "bare-semver": "^1.0.0" + }, + "peerDependencies": { + "bare-url": "*" + }, + "peerDependenciesMeta": { + "bare-url": { + "optional": true + } + } + }, + "node_modules/bare-module-resolve": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/bare-module-resolve/-/bare-module-resolve-1.12.1.tgz", + "integrity": "sha512-hbmAPyFpEq8FoZMd5sFO3u6MC5feluWoGE8YKlA8fCrl6mNtx68Wjg4DTiDJcqRJaovTvOYKfYngoBUnbaT7eg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-semver": "^1.0.0" + }, + "peerDependencies": { + "bare-url": "*" + }, + "peerDependenciesMeta": { + "bare-url": { + "optional": true + } + } + }, + "node_modules/bare-semver": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bare-semver/-/bare-semver-1.0.2.tgz", + "integrity": "sha512-ESVaN2nzWhcI5tf3Zzcq9aqCZ676VWzqw07eEZ0qxAcEOAFYBa0pWq8sK34OQeHLY3JsfKXZS9mDyzyxGjeLzA==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/base-x": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", + "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", + "license": "MIT" + }, + "node_modules/base32.js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base32.js/-/base32.js-0.1.0.tgz", + "integrity": "sha512-n3TkB02ixgBOhTvANakDb4xaMXnYUVkNoRFJjQflcqMQhyEKxEHdj3E6N8t8sUQ0mjH/3/JxzlXuz3ul/J90pQ==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/baseline-browser-mapping": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", @@ -2610,6 +6267,103 @@ "node": ">=6.0.0" } }, + "node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", + "license": "MIT" + }, + "node_modules/big-integer": { + "version": "1.6.36", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz", + "integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.2.tgz", + "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bigjs" + } + }, + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bip32-path": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/bip32-path/-/bip32-path-0.4.2.tgz", + "integrity": "sha512-ZBMCELjJfcNMkz5bDuJ1WrYvjlhEF5k6mQ8vUr4N7MbVRsXei7ZOg8VhhwMfNiW68NWmLkgkc6WvTickrLGprQ==", + "license": "MIT" + }, + "node_modules/bip66": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bip66/-/bip66-2.0.0.tgz", + "integrity": "sha512-kBG+hSpgvZBrkIm9dt5T1Hd/7xGCPEX2npoxAWZfsK1FvjgaxySEh2WizjyIstWXriKo9K9uJ4u0OnsyLDUPXQ==", + "license": "MIT" + }, + "node_modules/bitcoin-ops": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/bitcoin-ops/-/bitcoin-ops-1.4.1.tgz", + "integrity": "sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow==", + "license": "MIT" + }, + "node_modules/blake-hash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/blake-hash/-/blake-hash-2.0.0.tgz", + "integrity": "sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz", + "integrity": "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==", + "license": "MIT" + }, + "node_modules/borsh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-2.0.0.tgz", + "integrity": "sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==", + "license": "Apache-2.0" + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -2634,6 +6388,125 @@ "node": ">=8" } }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "license": "MIT", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", + "license": "MIT", + "dependencies": { + "bn.js": "^5.2.1", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz", + "integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==", + "license": "ISC", + "dependencies": { + "bn.js": "^5.2.2", + "browserify-rsa": "^4.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.6.1", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.9", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/browserify-sign/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/browserify-sign/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, "node_modules/browserslist": { "version": "4.28.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", @@ -2668,11 +6541,79 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "license": "MIT", + "dependencies": { + "base-x": "^5.0.0" + } + }, + "node_modules/bs58check": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-4.0.0.tgz", + "integrity": "sha512-FsGDOnFg9aVI9erdriULkd/JjEWONV/lQE5aYziB5PoBsXRind56lh8doIZIc9X4HoxT5x4bLjMWN1/NB8Zp5g==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.2.0", + "bs58": "^6.0.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "license": "MIT" + }, + "node_modules/bufferutil": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.1.0.tgz", + "integrity": "sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", @@ -2691,7 +6632,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -2705,7 +6645,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -2728,6 +6667,15 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001777", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001777.tgz", @@ -2748,34 +6696,98 @@ ], "license": "CC-BY-4.0" }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/cashaddrjs": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cashaddrjs/-/cashaddrjs-0.4.4.tgz", + "integrity": "sha512-xZkuWdNOh0uq/mxJIng6vYWfTowZLd9F4GMAlp2DwFHlcCqCm91NtuAc47RuV4L7r4PYcY5p6Cr2OKNb4hnkWA==", + "license": "MIT", + "dependencies": { + "big-integer": "1.6.36" + } + }, + "node_modules/cbor": { + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-10.0.12.tgz", + "integrity": "sha512-exQDevYd7ZQLP4moMQcZkKCVZsXLAtUSflObr3xTh4xzFIv/xBCdvCd6L259kQOUP2kcTC0jvC6PpZIf/WmRXA==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "nofilter": "^3.0.2" }, "engines": { - "node": ">=10" + "node": ">=20" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/cipher-base": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz", + "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", "license": "MIT" }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2788,9 +6800,29 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "license": "MIT", + "engines": { + "node": ">=20" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2814,6 +6846,70 @@ "node": ">= 0.6" } }, + "node_modules/cookie-es": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", + "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "license": "MIT" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-fetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2829,11 +6925,50 @@ "node": ">= 8" } }, + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "license": "MIT", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "dev": true, "license": "MIT" }, "node_modules/damerau-levenshtein": { @@ -2897,11 +7032,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -2915,6 +7055,15 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2926,7 +7075,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -2958,6 +7106,84 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "license": "MIT" + }, + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "node_modules/detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==", + "license": "MIT" + }, + "node_modules/detect-europe-js": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/detect-europe-js/-/detect-europe-js-0.1.2.tgz", + "integrity": "sha512-lgdERlL3u0aUdHocoouzT10d9I89VVhk0qNRmll7mXdGfJT1/wqZ2ZLA4oJAjeACPY5fT1wsbq2AT+GkuInsow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "license": "MIT" + }, "node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", @@ -2968,6 +7194,29 @@ "node": ">=8" } }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "license": "MIT" + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", + "license": "MIT" + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -2985,7 +7234,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -2996,6 +7244,15 @@ "node": ">= 0.4" } }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.307", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz", @@ -3003,6 +7260,27 @@ "dev": true, "license": "ISC" }, + "node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "license": "MIT" + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -3010,6 +7288,12 @@ "dev": true, "license": "MIT" }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", + "license": "MIT" + }, "node_modules/enhanced-resolve": { "version": "5.20.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.0.tgz", @@ -3097,7 +7381,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3107,7 +7390,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3145,7 +7427,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -3158,7 +7439,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -3201,6 +7481,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-toolkit": { + "version": "1.39.3", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.39.3.tgz", + "integrity": "sha512-Qb/TCFCldgOy8lZ5uC7nLGdqJwSabkQiYQShmw4jyiPk1pZzaYWTwaYKYP7EgLccWYgZocMrtItrwh683voaww==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "license": "MIT", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -3453,6 +7758,16 @@ "ms": "^2.1.1" } }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.10.2", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", @@ -3560,6 +7875,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-scope": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", @@ -3590,6 +7915,23 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", @@ -3644,14 +7986,63 @@ "node": ">=4.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", "engines": { - "node": ">=0.10.0" + "node": "> 0.1.90" } }, "node_modules/fast-deep-equal": { @@ -3695,7 +8086,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { @@ -3705,6 +8095,19 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-stable-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", + "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==", + "license": "MIT" + }, + "node_modules/fastestsmallesttextencoderdecoder": { + "version": "1.0.22", + "resolved": "https://registry.npmjs.org/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz", + "integrity": "sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==", + "license": "CC0-1.0", + "peer": true + }, "node_modules/fastq": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", @@ -3715,6 +8118,15 @@ "reusify": "^1.0.4" } }, + "node_modules/feaxios": { + "version": "0.0.23", + "resolved": "https://registry.npmjs.org/feaxios/-/feaxios-0.0.23.tgz", + "integrity": "sha512-eghR0A21fvbkcQBgZuMfQhrXxJzC0GNUGC9fXhBge33D+mFDTwl0aJ35zoQQn575BhyjQitRc5N4f+L4cP708g==", + "license": "MIT", + "dependencies": { + "is-retry-allowed": "^3.0.0" + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -3728,6 +8140,12 @@ "node": ">=16.0.0" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -3773,17 +8191,36 @@ } }, "node_modules/flatted": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.0.tgz", - "integrity": "sha512-kC6Bb+ooptOIvWj5B63EQWkF0FEnNjV2ZNkLMLZRDDduIiWeFF4iKnslwhiWxjAdbg4NzTNo6h0qLuvFrcx+Sw==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", + "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", "dev": true, "license": "ISC" }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.2.7" @@ -3795,11 +8232,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3836,6 +8288,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "is-property": "^1.0.0" + } + }, "node_modules/generator-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", @@ -3856,11 +8328,19 @@ "node": ">=6.9.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -3885,7 +8365,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -3973,7 +8452,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3989,6 +8467,23 @@ "dev": true, "license": "ISC" }, + "node_modules/h3": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.6.tgz", + "integrity": "sha512-oi15ESLW5LRthZ+qPCi5GNasY/gvynSKUQxgiovrY63bPAtG59wtM+LSrlcwvOHAXzGrXVLnI97brbkdPF9WoQ==", + "license": "MIT", + "dependencies": { + "cookie-es": "^1.2.2", + "crossws": "^0.3.5", + "defu": "^6.1.4", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.4", + "radix3": "^1.1.2", + "ufo": "^1.6.3", + "uncrypto": "^0.1.3" + } + }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -4016,7 +8511,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -4045,7 +8539,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -4058,7 +8551,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -4070,11 +8562,77 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hash-base": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz", + "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/hash-base/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hash-base/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/hash-base/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/hash-base/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -4100,6 +8658,82 @@ "hermes-estree": "0.25.1" } }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/htm": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/htm/-/htm-3.1.1.tgz", + "integrity": "sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==", + "license": "Apache-2.0" + }, + "node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "license": "MIT", + "peer": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "license": "ISC", + "peer": true + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/iceberg-js": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", @@ -4109,6 +8743,32 @@ "node": ">=20.0.0" } }, + "node_modules/idb-keyval": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz", + "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==", + "license": "Apache-2.0" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -4146,6 +8806,18 @@ "node": ">=0.8.19" } }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/int64-buffer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-1.1.0.tgz", + "integrity": "sha512-94smTCQOvigN4d/2R/YDjz8YVG0Sufvv2aAh8P5m42gwhCsDAJqnbNOrxJsrADuAFAA69Q/ptGzxvNcNuIJcvw==", + "license": "MIT" + }, "node_modules/internal-slot": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", @@ -4161,6 +8833,24 @@ "node": ">= 0.4" } }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -4242,24 +8932,10 @@ "semver": "^7.7.1" } }, - "node_modules/is-bun-module/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -4345,6 +9021,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-generator-function": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", @@ -4391,6 +9076,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-my-ip-valid": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz", + "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==", + "license": "MIT", + "peer": true + }, + "node_modules/is-my-json-valid": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz", + "integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==", + "license": "MIT", + "peer": true, + "dependencies": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^5.0.0", + "xtend": "^4.0.0" + } + }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -4431,6 +9137,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "license": "MIT", + "peer": true + }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -4450,6 +9163,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-retry-allowed": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-3.0.0.tgz", + "integrity": "sha512-9xH0xvoggby+u0uGF7cZXdrutWiBiaFG8ZT4YFPXL8NzkyAwX3AKGLeFQLvzDpM430+nDFBZ1LHkie/8ocL06A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", @@ -4479,6 +9204,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-standalone-pwa": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-standalone-pwa/-/is-standalone-pwa-0.1.1.tgz", + "integrity": "sha512-9Cbovsa52vNQCjdXOzeQq5CnCbAcRk05aU62K20WO372NrTv0NxibLFCK6lQ4/iZEFdEA3p3t2VNOn8AJ53F5g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "license": "MIT" + }, "node_modules/is-string": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", @@ -4518,7 +9263,6 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" @@ -4580,7 +9324,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, "license": "MIT" }, "node_modules/isexe": { @@ -4590,6 +9333,30 @@ "dev": true, "license": "ISC" }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/isows": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz", + "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, "node_modules/iterator.prototype": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", @@ -4605,7 +9372,90 @@ "set-function-name": "^2.0.2" }, "engines": { - "node": ">= 0.4" + "node": ">= 0.4" + } + }, + "node_modules/jayson": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.3.0.tgz", + "integrity": "sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ==", + "license": "MIT", + "dependencies": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "stream-json": "^1.9.1", + "uuid": "^8.3.2", + "ws": "^7.5.10" + }, + "bin": { + "jayson": "bin/jayson.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jayson/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "license": "MIT" + }, + "node_modules/jayson/node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/jayson/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/jayson/node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/jayson/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/jiti": { @@ -4618,6 +9468,12 @@ "jiti": "lib/jiti-cli.mjs" } }, + "node_modules/js-sha256": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.11.1.tgz", + "integrity": "sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg==", + "license": "MIT" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4672,6 +9528,12 @@ "dev": true, "license": "MIT" }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -4685,6 +9547,16 @@ "node": ">=6" } }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -4701,6 +9573,27 @@ "node": ">=4.0" } }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -4711,6 +9604,12 @@ "json-buffer": "3.0.1" } }, + "node_modules/keyvaluestorage-interface": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz", + "integrity": "sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==", + "license": "MIT" + }, "node_modules/language-subtag-registry": { "version": "0.3.23", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", @@ -5006,6 +9905,37 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/lit": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.0.tgz", + "integrity": "sha512-DGVsqsOIHBww2DqnuZzW7QsuCdahp50ojuDaBPC7jUDRpYoH0z7kHBBYZewRzer75FwtrkmkKk7iOAwSaWdBmw==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^2.1.0", + "lit-element": "^4.2.0", + "lit-html": "^3.3.0" + } + }, + "node_modules/lit-element": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.2.tgz", + "integrity": "sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.5.0", + "@lit/reactive-element": "^2.1.0", + "lit-html": "^3.3.0" + } + }, + "node_modules/lit-html": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.2.tgz", + "integrity": "sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -5029,6 +9959,12 @@ "dev": true, "license": "MIT" }, + "node_modules/long": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.5.tgz", + "integrity": "sha512-e0r9YBBgNCq1D1o5Dp8FMH0N5hsFtXDBiVa0qoJPHpakvZkmDKPRoGffZJII/XsHvj9An9blm+cRJ01yQqU+Dw==", + "license": "Apache-2.0" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -5042,6 +9978,13 @@ "loose-envify": "cli.js" } }, + "node_modules/lru_map": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.4.1.tgz", + "integrity": "sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg==", + "license": "MIT", + "peer": true + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -5066,12 +10009,22 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -5096,6 +10049,58 @@ "node": ">=8.6" } }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" + }, "node_modules/minimatch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", @@ -5123,7 +10128,30 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, + "license": "MIT" + }, + "node_modules/multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", + "license": "(Apache-2.0 AND MIT)" + }, + "node_modules/mustache": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.0.0.tgz", + "integrity": "sha512-FJgjyX/IVkbXBXYUwH+OYwQKqWpFPLaLVESd70yHjSDunwzV2hZOoTBvPf4KLoxesUzzyfTH6F784Uqd7Wm5yA==", + "license": "MIT", + "bin": { + "mustache": "bin/mustache" + }, + "engines": { + "npm": ">=1.4.0" + } + }, + "node_modules/nan": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.25.0.tgz", + "integrity": "sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==", "license": "MIT" }, "node_modules/nanoid": { @@ -5167,6 +10195,70 @@ "dev": true, "license": "MIT" }, + "node_modules/near-abi": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/near-abi/-/near-abi-0.2.0.tgz", + "integrity": "sha512-kCwSf/3fraPU2zENK18sh+kKG4uKbEUEQdyWQkmW8ZofmLarObIz2+zAYjA1teDZLeMvEQew3UysnPDXgjneaA==", + "license": "(MIT AND Apache-2.0)", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.11" + } + }, + "node_modules/near-api-js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/near-api-js/-/near-api-js-5.1.1.tgz", + "integrity": "sha512-h23BGSKxNv8ph+zU6snicstsVK1/CTXsQz4LuGGwoRE24Hj424nSe4+/1tzoiC285Ljf60kPAqRCmsfv9etF2g==", + "license": "(MIT AND Apache-2.0)", + "peer": true, + "dependencies": { + "@near-js/accounts": "1.4.1", + "@near-js/crypto": "1.4.2", + "@near-js/keystores": "0.2.2", + "@near-js/keystores-browser": "0.2.2", + "@near-js/keystores-node": "0.1.2", + "@near-js/providers": "1.0.3", + "@near-js/signers": "0.2.2", + "@near-js/transactions": "1.3.3", + "@near-js/types": "0.3.1", + "@near-js/utils": "1.1.0", + "@near-js/wallet-account": "1.3.3", + "@noble/curves": "1.8.1", + "borsh": "1.0.0", + "depd": "2.0.0", + "http-errors": "1.7.2", + "near-abi": "0.2.0", + "node-fetch": "2.6.7" + } + }, + "node_modules/near-api-js/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/near-api-js/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/next": { "version": "16.1.6", "resolved": "https://registry.npmjs.org/next/-/next-16.1.6.tgz", @@ -5248,6 +10340,12 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "license": "MIT" + }, "node_modules/node-exports-info": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", @@ -5267,6 +10365,59 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/node-exports-info/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "license": "MIT" + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-mock-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz", + "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==", + "license": "MIT" + }, "node_modules/node-releases": { "version": "2.0.36", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", @@ -5274,6 +10425,24 @@ "dev": true, "license": "MIT" }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "license": "MIT", + "engines": { + "node": ">=12.19" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -5397,6 +10566,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/ofetch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", + "license": "MIT", + "dependencies": { + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" + } + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -5433,6 +10622,69 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/ox": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.9.3.tgz", + "integrity": "sha512-KzyJP+fPV4uhuuqrTZyok4DC7vFzi7HLUFiUNEmpbyh59htKWkOC98IONC1zgXJPbHAhQgqs6B0Z6StCGhmQvg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "^1.11.0", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "1.9.1", + "@noble/hashes": "^1.8.0", + "@scure/bip32": "^1.7.0", + "@scure/bip39": "^1.6.0", + "abitype": "^1.0.9", + "eventemitter3": "5.0.1" + }, + "peerDependencies": { + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/ox/node_modules/@noble/curves": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -5465,6 +10717,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -5478,11 +10739,26 @@ "node": ">=6" } }, + "node_modules/parse-asn1": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz", + "integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==", + "license": "ISC", + "dependencies": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "pbkdf2": "^3.1.5", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5505,6 +10781,23 @@ "dev": true, "license": "MIT" }, + "node_modules/pbkdf2": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz", + "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==", + "license": "MIT", + "dependencies": { + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "ripemd160": "^2.0.3", + "safe-buffer": "^5.2.1", + "sha.js": "^2.4.12", + "to-buffer": "^1.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -5515,7 +10808,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -5524,11 +10816,56 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pino": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-10.0.0.tgz", + "integrity": "sha512-eI9pKwWEix40kfvSzqEP6ldqOoBIN7dwD/o91TY5z8vQI12sAffpR/pOqAD1IVVwIVHDpHjkq0joBPdJD0rafA==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "slow-redact": "^0.3.0", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/pino-std-serializers": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz", + "integrity": "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==", + "license": "MIT" + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -5563,6 +10900,16 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/preact": { + "version": "10.28.4", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.28.4.tgz", + "integrity": "sha512-uKFfOHWuSNpRFVTnljsCluEFq57OKT+0QdOiQo8XWnQ/pSvg7OpX5eNOejELXJMWy+BwM2nobz0FkvzmnpCNsQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -5589,6 +10936,28 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/process-warning": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -5601,6 +10970,62 @@ "react-is": "^16.13.1" } }, + "node_modules/protobufjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/proxy-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", + "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "license": "MIT" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -5611,6 +11036,33 @@ "node": ">=6" } }, + "node_modules/pushdata-bitcoin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz", + "integrity": "sha512-hw7rcYTJRAl4olM8Owe8x0fBuJJ+WGbMhQuLWOXEMN3PxPCKQHRkhfL+XG0+iXUmSHjkMmb3Ba55Mt21cZc9kQ==", + "license": "MIT", + "dependencies": { + "bitcoin-ops": "^1.3.0" + } + }, + "node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "license": "MIT", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5632,6 +11084,37 @@ ], "license": "MIT" }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "license": "MIT" + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "license": "MIT", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "node_modules/react": { "version": "19.2.3", "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", @@ -5676,6 +11159,42 @@ "dev": true, "license": "MIT" }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -5720,6 +11239,34 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/require-addon": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/require-addon/-/require-addon-1.2.0.tgz", + "integrity": "sha512-VNPDZlYgIYQwWp9jMTzljx+k0ZtatKlcvOhktZ/anNPI3dQ9NXk7cq2U4iJ1wd9IrytRnYhyEocFWbkdPb+MYA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-addon-resolve": "^1.3.0" + }, + "engines": { + "bare": ">=1.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "license": "ISC" + }, "node_modules/resolve": { "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", @@ -5772,6 +11319,96 @@ "node": ">=0.10.0" } }, + "node_modules/ripemd160": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", + "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.1.2", + "inherits": "^2.0.4" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ripple-address-codec": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-5.0.0.tgz", + "integrity": "sha512-de7osLRH/pt5HX2xw2TRJtbdLLWHu0RXirpQaEeCnWKY5DYHykh3ETSkofvm0aX0LJiV7kwkegJxQkmbO94gWw==", + "license": "ISC", + "dependencies": { + "@scure/base": "^1.1.3", + "@xrplf/isomorphic": "^1.0.0" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/ripple-binary-codec": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-2.7.0.tgz", + "integrity": "sha512-gEBqan5muVp+q7jgZ6aUniSyN+e4FKRzn9uFAeFSIW7IgvkezP1cUolNtpahQ+jvaSK/33hxZA7wNmn1mc330g==", + "license": "ISC", + "dependencies": { + "@xrplf/isomorphic": "^1.0.1", + "bignumber.js": "^9.0.0", + "ripple-address-codec": "^5.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/ripple-keypairs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-2.0.0.tgz", + "integrity": "sha512-b5rfL2EZiffmklqZk1W+dvSy97v3V/C7936WxCCgDynaGPp7GE6R2XO7EU9O2LlM/z95rj870IylYnOQs+1Rag==", + "license": "ISC", + "dependencies": { + "@noble/curves": "^1.0.0", + "@xrplf/isomorphic": "^1.0.0", + "ripple-address-codec": "^5.0.0" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/rpc-websockets": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.3.5.tgz", + "integrity": "sha512-4mAmr+AEhPYJ9TmDtxF3r3ZcbWy7W8kvZ4PoZYw/Xgp2J7WixjwTgiQZsoTDvch5nimmg3Ay6/0Kuh9oIvVs9A==", + "license": "LGPL-3.0-only", + "dependencies": { + "@swc/helpers": "^0.5.11", + "@types/uuid": "^10.0.0", + "@types/ws": "^8.2.2", + "buffer": "^6.0.3", + "eventemitter3": "^5.0.1", + "uuid": "^11.0.0", + "ws": "^8.5.0" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/kozjak" + }, + "optionalDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^6.0.0" + } + }, + "node_modules/rpc-websockets/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5796,6 +11433,15 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -5816,6 +11462,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/safe-push-apply": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", @@ -5851,27 +11517,64 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/scheduler": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, + "node_modules/secp256k1": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.1.tgz", + "integrity": "sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/secp256k1/node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "license": "MIT" + }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -5916,6 +11619,46 @@ "node": ">= 0.4" } }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "license": "ISC", + "peer": true + }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", + "license": "BSD-3-Clause", + "dependencies": { + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/sharp": { "version": "0.34.5", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", @@ -5961,19 +11704,6 @@ "@img/sharp-win32-x64": "0.34.5" } }, - "node_modules/sharp/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -6073,6 +11803,69 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/slow-redact": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/slow-redact/-/slow-redact-0.3.2.tgz", + "integrity": "sha512-MseHyi2+E/hBRqdOi5COy6wZ7j7DxXRz9NkseavNYSvvWC06D8a5cidVZX3tcG5eCW3NIyVU4zT63hw0Q486jw==", + "license": "MIT" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/sodium-native": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-4.3.3.tgz", + "integrity": "sha512-OnxSlN3uyY8D0EsLHpmm2HOFmKddQVvEMmsakCrXUzSd8kjjbzL413t4ZNF3n0UxSwNgwTyUvkmZHTfuCeiYSw==", + "license": "MIT", + "optional": true, + "dependencies": { + "require-addon": "^1.1.0" + } + }, + "node_modules/sonic-boom": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.1.tgz", + "integrity": "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -6082,6 +11875,15 @@ "node": ">=0.10.0" } }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, "node_modules/stable-hash": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", @@ -6089,6 +11891,16 @@ "dev": true, "license": "MIT" }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/stop-iteration-iterator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", @@ -6103,6 +11915,60 @@ "node": ">= 0.4" } }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-chain": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", + "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", + "license": "BSD-3-Clause" + }, + "node_modules/stream-json": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", + "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", + "license": "BSD-3-Clause", + "dependencies": { + "stream-chain": "^2.2.5" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, "node_modules/string.prototype.includes": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", @@ -6216,6 +12082,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -6239,6 +12117,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/style-vendorizer": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/style-vendorizer/-/style-vendorizer-2.2.3.tgz", + "integrity": "sha512-/VDRsWvQAgspVy9eATN3z6itKTuyg+jW1q6UoTCQCFRqPDw8bi3E1hXIKnGw5LvXS2AQPuJ7Af4auTLYeBOLEg==", + "license": "MIT" + }, "node_modules/styled-jsx": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", @@ -6262,6 +12146,15 @@ } } }, + "node_modules/superstruct": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", + "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6309,6 +12202,43 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + }, + "node_modules/thread-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + } + }, + "node_modules/tiny-secp256k1": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.7.tgz", + "integrity": "sha512-eb+F6NabSnjbLwNoC+2o5ItbmP1kg7HliWue71JgLegQt6A5mTN8YbvTLCazdlg6e5SV6A+r8OGvZYskdlmhqQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "bindings": "^1.3.0", + "bn.js": "^4.11.8", + "create-hmac": "^1.1.7", + "elliptic": "^6.4.0", + "nan": "^2.13.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/tiny-secp256k1/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "license": "MIT" + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -6351,298 +12281,770 @@ "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "license": "MIT" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/ts-api-utils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-mixer": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", + "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==", + "license": "MIT" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typeforce": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", + "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.0.tgz", + "integrity": "sha512-W8GcigEMEeB07xEZol8oJ26rigm3+bfPHxHvwbYUlu1fUDsGuQ7Hiskx5xGW/xM4USc9Ephe3jtv7ZYPQntHeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.57.0", + "@typescript-eslint/parser": "8.57.0", + "@typescript-eslint/typescript-estree": "8.57.0", + "@typescript-eslint/utils": "8.57.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", + "node_modules/ua-is-frozen": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ua-is-frozen/-/ua-is-frozen-0.1.2.tgz", + "integrity": "sha512-RwKDW2p3iyWn4UbaxpP2+VxwqXh0jpvdxsYpZ5j/MLLiQOfbsV5shpgQiw93+KMYQPcteeMQ289MaAFzs3G9pw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "license": "MIT" + }, + "node_modules/ua-parser-js": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-2.0.9.tgz", + "integrity": "sha512-OsqGhxyo/wGdLSXMSJxuMGN6H4gDnKz6Fb3IBm4bxZFMnyy0sdf6MN96Ie8tC6z/btdO+Bsy8guxlvLdwT076w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "AGPL-3.0-or-later", "dependencies": { - "is-number": "^7.0.0" + "detect-europe-js": "^0.1.2", + "is-standalone-pwa": "^0.1.1", + "ua-is-frozen": "^0.1.2" + }, + "bin": { + "ua-parser-js": "script/cli.js" }, "engines": { - "node": ">=8.0" + "node": "*" } }, - "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", - "dev": true, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "license": "MIT" + }, + "node_modules/uint8array-tools": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/uint8array-tools/-/uint8array-tools-0.0.8.tgz", + "integrity": "sha512-xS6+s8e0Xbx++5/0L+yyexukU7pz//Yg6IHg3BKhXotg1JcYtgxVcUctQ0HxLByiJzpAkNFawz1Nz5Xadzo82g==", "license": "MIT", "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" + "node": ">=14.0.0" } }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, + "node_modules/uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", "license": "MIT", "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "multiformats": "^9.4.2" } }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.0" + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" }, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "license": "MIT" }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/undici-types": { + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.22.0.tgz", + "integrity": "sha512-RKZvifiL60xdsIuC80UY0dq8Z7DbJUV8/l2hOVbyZAxBzEeQU4Z58+4ZzJ6WN2Lidi9KzT5EbiGX+PI/UGYuRw==", + "license": "MIT" + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", "dev": true, + "hasInstallScript": true, "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1" + "napi-postinstall": "^0.3.0" }, - "engines": { - "node": ">= 0.8.0" + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, + "node_modules/unstorage": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.4.tgz", + "integrity": "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" + "anymatch": "^3.1.3", + "chokidar": "^5.0.0", + "destr": "^2.0.5", + "h3": "^1.15.5", + "lru-cache": "^11.2.0", + "node-fetch-native": "^1.6.7", + "ofetch": "^1.5.1", + "ufo": "^1.6.3" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6 || ^7 || ^8", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", + "@vercel/kv": "^1 || ^2 || ^3", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/functions": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/unstorage/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">= 0.4" + "node": "20 || >=22" } }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, - "engines": { - "node": ">= 0.4" + "bin": { + "update-browserslist-db": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urijs": { + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", + "license": "MIT" + }, + "node_modules/usb": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/usb/-/usb-2.17.0.tgz", + "integrity": "sha512-UuFgrlglgDn5ll6d5l7kl3nDb2Yx43qLUGcDq+7UNLZLtbNug0HZBb2Xodhgx2JZB1LqvU+dOGqLEeYUeZqsHg==", + "hasInstallScript": true, "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" + "@types/w3c-web-usb": "^1.0.6", + "node-addon-api": "^8.0.0", + "node-gyp-build": "^4.5.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12.22.0 <13.0 || >=14.17.0" + } + }, + "node_modules/usb/node_modules/node-addon-api": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.6.0.tgz", + "integrity": "sha512-gBVjCaqDlRUk0EwoPNKzIr9KkS9041G/q31IBShPs1Xz6UTA+EXdZADbzqAJQrpDRq71CIMnOP5VMut3SL0z5Q==", + "license": "MIT", + "engines": { + "node": "^18 || ^20 || >= 21" } }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, + "node_modules/utf-8-validate": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.6.tgz", + "integrity": "sha512-q3l3P9UtEEiAHcsgsqTgf9PPjctrDWoIXW3NpOHFdRDbLvu4DLIcxHangJ4RLrWkBcKjmcs/6NkerI8T/rE4LA==", + "hasInstallScript": true, "license": "MIT", + "optional": true, "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" + "node-gyp-build": "^4.3.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6.14.2" } }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" + "uuid": "dist/bin/uuid" } }, - "node_modules/typescript-eslint": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", - "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", - "dev": true, + "node_modules/uuid4": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid4/-/uuid4-2.0.3.tgz", + "integrity": "sha512-CTpAkEVXMNJl2ojgtpLXHgz23dh8z81u6/HEPiQFOvBc/c2pde6TVHmH4uwY0d/GLF3tb7+VDAj4+2eJaQSdZQ==", + "license": "ISC" + }, + "node_modules/valtio": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/valtio/-/valtio-2.1.7.tgz", + "integrity": "sha512-DwJhCDpujuQuKdJ2H84VbTjEJJteaSmqsuUltsfbfdbotVfNeTE4K/qc/Wi57I9x8/2ed4JNdjEna7O6PfavRg==", "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1" + "proxy-compare": "^3.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12.20.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "@types/react": ">=18.0.0", + "react": ">=18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/varuint-bitcoin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-2.0.0.tgz", + "integrity": "sha512-6QZbU/rHO2ZQYpWFDALCDSRsXbAs1VOEmXAxtbtjLtKuMJ/FQ8YbhfxlaiKv5nklci0M6lZtlZyxo9Q+qNnyog==", + "license": "MIT", + "dependencies": { + "uint8array-tools": "^0.0.8" + } + }, + "node_modules/viem": { + "version": "2.47.1", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.47.1.tgz", + "integrity": "sha512-frlK109+X5z2vlZeIGKa6Rxev6CcIpumV/VVhaIPc/QFotiB6t/CgUwkMlYfr4F2YNBZZ2l6jguWz2sY1XrQHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "dependencies": { + "@noble/curves": "1.9.1", + "@noble/hashes": "1.8.0", + "@scure/bip32": "1.7.0", + "@scure/bip39": "1.6.0", + "abitype": "1.2.3", + "isows": "1.0.7", + "ox": "0.14.0", + "ws": "8.18.3" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, + "node_modules/viem/node_modules/@noble/curves": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" + "@noble/hashes": "1.8.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.21.3 || >=16" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "license": "MIT" - }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, + "node_modules/viem/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" + "engines": { + "node": "^14.21.3 || >=16" }, "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, + "node_modules/viem/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/viem/node_modules/ox": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.14.0.tgz", + "integrity": "sha512-WLOB7IKnmI3Ol6RAqY7CJdZKl8QaI44LN91OGF1061YIeN6bL5IsFcdp7+oQShRyamE/8fW/CBRWhJAOzI35Dw==", "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, { "type": "github", - "url": "https://github.com/sponsors/ai" + "url": "https://github.com/sponsors/wevm" } ], "license": "MIT", "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" + "@adraffy/ens-normalize": "^1.11.0", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "1.9.1", + "@noble/hashes": "^1.8.0", + "@scure/bip32": "^1.7.0", + "@scure/bip39": "^1.6.0", + "abitype": "^1.2.3", + "eventemitter3": "5.0.1" }, - "bin": { - "update-browserslist-db": "cli.js" + "peerDependencies": { + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/viem/node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" }, "peerDependencies": { - "browserslist": ">= 4.21.0" + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { - "punycode": "^2.1.0" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/which": { @@ -6728,11 +13130,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "license": "ISC" + }, "node_modules/which-typed-array": { "version": "1.1.20", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -6750,6 +13157,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wif": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/wif/-/wif-5.0.0.tgz", + "integrity": "sha512-iFzrC/9ne740qFbNjTZ2FciSRJlHIXoxqk/Y5EnE08QOXu1WjJyCCswwDTYbohAOEnlCtLaAAQBhyaLRFh2hMA==", + "license": "MIT", + "dependencies": { + "bs58check": "^4.0.0" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -6760,6 +13176,20 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ws": { "version": "8.19.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", @@ -6781,6 +13211,43 @@ } } }, + "node_modules/xrpl": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/xrpl/-/xrpl-4.4.3.tgz", + "integrity": "sha512-vi2OjuNkiaP8nv1j+nqHp8GZwwEjO6Y8+j/OuVMg6M4LwXEwyHdIj33dlg7cyY1Lw5+jb9HqFOQvABhaywVbTQ==", + "license": "ISC", + "dependencies": { + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", + "@xrplf/isomorphic": "^1.0.1", + "@xrplf/secret-numbers": "^2.0.0", + "bignumber.js": "^9.0.0", + "eventemitter3": "^5.0.1", + "fast-json-stable-stringify": "^2.1.0", + "ripple-address-codec": "^5.0.0", + "ripple-binary-codec": "^2.5.0", + "ripple-keypairs": "^2.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -6788,6 +13255,93 @@ "dev": true, "license": "ISC" }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 90c2e44..d646f0c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -7,21 +7,19 @@ "build": "next build", "start": "next start", "lint": "eslint", - "format": "prettier --write ." + "format": "prettier --write .", + "prepare": "cd .. && husky frontend/.husky" }, "dependencies": { + "@acta-team/acta-sdk": "^1.1.8", + "@creit.tech/stellar-wallets-kit": "^2.0.0", "@hookform/resolvers": "^3.9.0", - "@supabase/ssr": "^0.5.2", - "@supabase/supabase-js": "^2.47.0", - "@tanstack/react-query": "^5.62.0", + "@stellar/stellar-sdk": "^13.3.0", "next": "16.1.6", "react": "19.2.3", "react-dom": "19.2.3", "react-hook-form": "^7.54.0", - "zod": "^3.23.8", - "@stellar/stellar-sdk": "^13.3.0", - "@creit.tech/stellar-wallets-kit": "^2.0.0", - "@acta-team/acta-sdk": "^1.1.6" + "zod": "^3.23.8" }, "devDependencies": { "@tailwindcss/postcss": "^4", @@ -31,8 +29,12 @@ "babel-plugin-react-compiler": "1.0.0", "eslint": "^9", "eslint-config-next": "16.1.6", + "husky": "^9.1.7", "prettier": "^3.8.1", "tailwindcss": "^4", - "typescript": "^5" + "typescript": "^5", + "@supabase/ssr": "^0.5.2", + "@supabase/supabase-js": "^2.47.0", + "@tanstack/react-query": "^5.62.0" } } diff --git a/frontend/src/app/(dashboard)/dashboard/page.tsx b/frontend/src/app/(dashboard)/dashboard/page.tsx index 236b66f..4a7f641 100644 --- a/frontend/src/app/(dashboard)/dashboard/page.tsx +++ b/frontend/src/app/(dashboard)/dashboard/page.tsx @@ -12,9 +12,9 @@ export default async function Page() { const stats = { totalEntrepreneurs: 0, + activeLoans: 0, totalCredentialsIssued: 0, - totalCredentialsDraft: 0, - totalVaults: 0, + avgIncomeGrowthPct: null, }; return ; diff --git a/frontend/src/app/(dashboard)/dashboard/vaults/page.tsx b/frontend/src/app/(dashboard)/dashboard/vaults/page.tsx deleted file mode 100644 index c74dea1..0000000 --- a/frontend/src/app/(dashboard)/dashboard/vaults/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { VaultsPage } from '@/features/vaults/components/pages/VaultsPage'; - -// TODO: vaults are scoped to an entrepreneur, not directly to the org. -// Decide if this page should: -// a) require an ?entrepreneurId=... query param, or -// b) show all vaults for the org (requires joining with entrepreneurs) -// For now renders an empty state as placeholder. -export default async function Page() { - // TODO: fetch vaults by org or by selected entrepreneur - return ; -} diff --git a/frontend/src/app/(dashboard)/dashboard/wallets/page.tsx b/frontend/src/app/(dashboard)/dashboard/wallets/page.tsx deleted file mode 100644 index 7a42f84..0000000 --- a/frontend/src/app/(dashboard)/dashboard/wallets/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { WalletsPage } from '@/features/wallets/components/pages/WalletsPage'; - -// TODO: wallets are scoped to an entrepreneur, not directly to the org. -// Decide if this page should: -// a) require an ?entrepreneurId=... query param, or -// b) show all wallets for the org (requires joining with entrepreneurs) -// For now renders an empty state as placeholder. -export default async function Page() { - // TODO: fetch wallets by org or by selected entrepreneur - return ; -} diff --git a/frontend/src/components/layout/Sidebar.tsx b/frontend/src/components/layout/Sidebar.tsx index ae68a92..8df8f11 100644 --- a/frontend/src/components/layout/Sidebar.tsx +++ b/frontend/src/components/layout/Sidebar.tsx @@ -14,8 +14,6 @@ const NAV_ITEMS: NavItem[] = [ { label: 'Dashboard', href: ROUTES.dashboard }, { label: 'Emprendedores', href: ROUTES.entrepreneurs.list }, { label: 'Credenciales', href: ROUTES.credentials.list }, - { label: 'Wallets', href: ROUTES.wallets }, - { label: 'Vaults', href: ROUTES.vaults }, ]; export function Sidebar() { diff --git a/frontend/src/features/credentials/components/pages/CredentialDetailPage.tsx b/frontend/src/features/credentials/components/pages/CredentialDetailPage.tsx index b8f372c..f31f729 100644 --- a/frontend/src/features/credentials/components/pages/CredentialDetailPage.tsx +++ b/frontend/src/features/credentials/components/pages/CredentialDetailPage.tsx @@ -7,7 +7,6 @@ interface CredentialDetailPageProps { } // TODO: add revoke action button (calls orchestrator.revoke) -// TODO: add on-chain verification status panel // TODO: add credential relationships section // TODO: add evidence snapshots section export function CredentialDetailPage({ @@ -32,37 +31,17 @@ export function CredentialDetailPage({ /> - {/* On-chain info */} - {credential.onchainTxHash && ( + {/* ACTA VC info */} + {credential.actaVcId && (

- Anclaje on-chain + Credencial ACTA

-
-
-
TX Hash
-
- {credential.onchainTxHash} -
-
-
-
Contrato (vc-vault)
-
- {credential.onchainContractId ?? '—'} -
-
-
-
VC ID on-chain
-
- {credential.onchainVcId ?? '—'} -
-
-
-
Red
-
- {credential.onchainNetwork ?? '—'} -
-
+
+
VC ID
+
+ {credential.actaVcId} +
)} diff --git a/frontend/src/features/credentials/components/ui/IssuanceForm.tsx b/frontend/src/features/credentials/components/ui/IssuanceForm.tsx index fa3ec16..b5bffd2 100644 --- a/frontend/src/features/credentials/components/ui/IssuanceForm.tsx +++ b/frontend/src/features/credentials/components/ui/IssuanceForm.tsx @@ -8,10 +8,9 @@ import { IssuanceDraftSchema, type IssuanceDraftInput } from '../../schemas'; interface IssuanceFormProps { onSubmit: (data: IssuanceDraftInput) => void | Promise; isLoading?: boolean; - // TODO: pass available templates, wallets, vaults as props for dropdowns } -// TODO: fetch available entrepreneurs, templates, wallets, vaults via server (passed as props) +// TODO: pass available entrepreneurs as props for a dropdown selector // TODO: add multi-step wizard: 1. Select entrepreneur → 2. Configure VC → 3. Review + issue export function IssuanceForm({ onSubmit, @@ -23,7 +22,7 @@ export function IssuanceForm({ formState: { errors }, } = useForm({ resolver: zodResolver(IssuanceDraftSchema), - defaultValues: { credentialType: 'impact', publicClaims: {} }, + defaultValues: { credentialType: 'impact' }, }); return ( @@ -44,6 +43,20 @@ export function IssuanceForm({ )} +
+ + +
+